所以今天我发现了ruby的这个特性:
irb(main):001:0> (1
irb(main):002:1> + 3)
=> 3
如果加号出现在新行上,则不会评估整个行。这是为什么?我想在这种情况下尊重括号。
答案 0 :(得分:12)
Ruby将换行符解释为表达式的结尾。您的代码等同于
(1; +3)
进一步相当于
(1; 3)
在Ruby中,最后一个表达式是返回值,即3
。
如果您想换行,那么您可以将操作员留在上一行
(1 +
3)
# => 4
或使用\
明确指出续行。
(1\
+ 3)
# => 4
答案 1 :(得分:5)
继@ sawa的优秀答案之后,如果你明确地将操作称为一种方法,那么它将起作用
(1.
+ 3)
=> 4
这是因为尾随的全停止会导致下一行的方法名称被追加。