新行上的+忽略括号。这是为什么?

时间:2016-01-12 15:24:26

标签: ruby

所以今天我发现了ruby的这个特性:

irb(main):001:0> (1
irb(main):002:1> + 3)
=> 3

如果加号出现在新行上,则不会评估整个行。这是为什么?我想在这种情况下尊重括号。

2 个答案:

答案 0 :(得分:12)

Ruby将换行符解释为表达式的结尾。您的代码等同于

(1; +3)

进一步相当于

(1; 3)

在Ruby中,最后一个表达式是返回值,即3

如果您想换行,那么您可以将操作员留在上一行

(1 +
3)
# => 4

或使用\明确指出续行。

(1\
+ 3)
# => 4

答案 1 :(得分:5)

继@ sawa的优秀答案之后,如果你明确地将操作称为一种方法,那么它将起作用

(1.
+ 3)
=> 4

这是因为尾随的全停止会导致下一行的方法名称被追加。