该版本的方法已成功定义
def foo(bar)
baz >= baz(bar)
end
而此方法的此版本存在语法错误:
def foo(bar)
baz >= baz bar
end
# syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '('
Ruby是否认为我的意思是
baz(>= baz bar)
(这不能正常工作,因为您无法使用二进制运算符启动表达式?)或(baz >= baz) bar
吗? (这没有任何意义)?我会喜欢某种解释,或者甚至更好的指向Ruby文档的指针,它解释了为什么很难解析此表达式。
最佳答案
似乎在不使用括号传递参数时,Ruby在与函数调用进行比较时会遇到麻烦。我已经对此进行了一些测试,它似乎很全面:irb(main):031:0> 4 < rand 5
#=>SyntaxError: (irb):31: syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '('
关于ruby - 有什么可能的歧义导致此Ruby代码抛出SyntaxError?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25295402/