ako*_*nsu 10 ruby syntax syntax-error
我正在运行Ruby 1.9.
这是一个有效的语法:
items = (data['DELETE'] || data['delete'] ||
data['GET'] || data['get'] || data['POST'] || data['post'])
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误:
items = (data['DELETE'] || data['delete']
|| data['GET'] || data['get'] || data['POST'] || data['post'])
t.rb:8: syntax error, unexpected tOROP, expecting ')'
|| data['GET'] || data['get'] |...
^
Run Code Online (Sandbox Code Playgroud)
为什么?!
我能说的是"这就是它的运作方式".
一般来说,Ruby解析器可以很好地确定表达式何时需要在另一条线上继续运行.世界上几乎所有其他语言都完全解决了这个问题,需要一个实际的角色继续下一行或终止声明.
如你所知,Ruby非常特别,几乎总是如此,它只是弄明白了.
但在这种情况下,存在冲突.解析器知道你的表达式没有完成,因为它仍然在寻找),但它可能是一个复合表达式.
例如,你可能会写这样的东西:
(p :a; p :b; p :c)
Run Code Online (Sandbox Code Playgroud)
...但是使用换行软终止符而不是;......下面这个语法实际上有效:
(p :a
p :b
p :c)
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,该表达式的值是序列中最后一个表达式的值.)
如果没有更好的提示,Ruby无法解析您的语句和上述语句,例如显然需要另一行的二元运算符.
| 归档时间: |
|
| 查看次数: |
845 次 |
| 最近记录: |