此版本方法定义成功
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) 酒吧
? (这没有任何意义)?
我希望得到某种解释,或者更好的是指向 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/