该版本的方法已成功定义

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/

10-13 04:49