原始问题
更改ruby版本(1.9.3
> 1.9.2
),突然所有的coffeescripts开始生成unexpected INDENT
。
我已经三次检查空格/制表符文件不一致,这不是问题。当我注释整个脚本时,同样的错误跳转到下一个/另一个coffeescript文件。
尝试coffee-rails
版本3.2.1和3.2.2。两者都不成功。
谁来点一盏灯?
更多细节我找到了导致这个的原因,但是我不明白为什么不同的Ruby版本会有不同的工作方式。这是一个很长的故事,但这里是它。
我使用了一个技巧来声明静态或动态 getter和setter到我的类。这类似于:
Function::dynamic = (prop, desc) ->
Object.defineProperty @prototype, prop, desc
Function::static = (prop, desc) ->
Object.defineProperty @, prop, desc
这为我提供了一种像这样声明属性的方法:
class MyClass
@static 'accessor'
get: -> _accessor
set: (value) -> _acessor = value
我的代码中有很多这样的,但是在Ruby降级之后,代码结构就停止工作了。现在我必须在方法的第一个参数之后添加一个逗号。如:
@static 'accessor',
get: -> (...)
这就是它的全部意义。: S
回答不再必要,但如果有人能解释…我很乐意。
这种语法是"故意"不允许的,它被允许仅仅是因为编译器拒绝生成'a'(...)
。ID block
是一个调用