Nee*_*eed 5 ruby operator-precedence
http://phrogz.net/programmingruby/language.html#table_18.4 上面链接提供的表格只给出了 ruby 运算符的优先级。方法的优先级是什么(或者我应该说:消息/函数)?
例如,当我在 irb 中输入如下内容时
Math.sqrt 2 + 2
Run Code Online (Sandbox Code Playgroud)
结果我得到了 2.0。没有优先级的明确规则,我无法决定在哪里使用括号以及在哪里省略它们。所以,请有人帮助我摆脱这种不确定性。提前致谢!
在 Ruby 中,任何运算符都优先于方法调用,例如首先计算运算符。
然而,这个例子Math.sqrt 2 + 2
很好地说明了省略括号会多么难以阅读和不直观。人们可能期望Math.sqrt(2) + 2
在这里进行评估。
当你遇到这样的一行时,你可能会想:编码员的意图是什么?这是一个错误吗?
尽可能使用括号始终是一个好主意,以明确您想要什么,特别是当存在方法调用或多个运算符时 - 这只是良好的风格,并且是风险最低的方法(例如,不要做出假设,但使用括号使自己清楚)。
在表达式中添加额外的括号从来没有什么坏处,但将它们省略可能会造成很大的损失。
这是我最近遇到的一个很好的例子:
def foo(arg)
raise "error"
end
x = foo 4 rescue 7
x
=> nil # oops!
x = foo(4) rescue 7
x
=> 7
Run Code Online (Sandbox Code Playgroud)
我希望这很好地说明了为什么使用括号很重要
还:
检查此处,在“调用方法”下: http: //ruby-doc.org/docs/ProgrammingRuby/html/tut_methods.html 引用:
[...] 如果没有歧义,您可以在调用方法时省略参数列表周围的括号。[...]但是,除了最简单的情况外,我们不建议这样做——存在一些微妙的问题[特别是,您必须在本身就是另一个方法调用的参数的方法调用上使用括号(除非它是最后一个参数)。]我们的规则很简单:如果有任何疑问,请使用括号。
另请参阅: http: //phrogz.net/programmingruby/language.html
归档时间: |
|
查看次数: |
1501 次 |
最近记录: |