ruby - 什么可能的歧义导致此 Ruby 代码抛出 SyntaxError?

标签 ruby syntax

此版本方法定义成功

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/

相关文章:

ruby - 在 ASP 页面上 Mechanize 中断

ruby-on-rails - Rails ActiveRecord STI : Limit scope to Parent Model

ruby-on-rails - use_ssl 值已更改,但在尝试发出 https 请求时 session 已经启动

java - 我需要帮助理解 java 中 Timer 类的 scheduleAtFixedRate 方法

ruby-on-rails - 如何解决 Bundler 中的 Gem 兼容问题?

ruby-on-rails - RefineryCMS 与现有 Rails 3.1+ 应用程序集成

javascript - Node.js 中的 +new Date 语法是什么

swift - Swift 语法 ".bar"叫什么?

Python 文字 r'\' 不被接受

ruby - Ruby 1.9 中新的散列语法有什么好处?