Ruby +;在新行中忽略括号。为什么呢?

Ruby +;在新行中忽略括号。为什么呢?,ruby,Ruby,所以今天我发现了ruby的这个特性: irb(main):001:0> (1 irb(main):002:1> + 3) => 3 如果加号出现在新的一行上,则不会对整个事件进行评估。为什么呢?在这种情况下,我希望括号得到尊重。Ruby将换行符解释为表达式的结尾。您的代码相当于 (1; +3) (1; 3) 这进一步等同于 (1; +3) (1; 3) 在Ruby中,最后一个表达式是返回值,即3 如果要换行,则可以将运算符保留在前一行中 (1 + 3) # =>

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

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

如果加号出现在新的一行上,则不会对整个事件进行评估。为什么呢?在这种情况下,我希望括号得到尊重。

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

(1; +3)
(1; 3)
这进一步等同于

(1; +3)
(1; 3)
在Ruby中,最后一个表达式是返回值,即
3

如果要换行,则可以将运算符保留在前一行中

(1 +
3)
# => 4
或者使用
\
明确指示行继续

(1\
+ 3)
# => 4

除了@sawa的优秀答案之外,如果您明确地将该操作称为一种方法,它将起作用

(1.
+ 3)
=> 4

这是因为尾随的句号将导致在下一行追加方法名

@DaveNewton:显然,这是ruby的一个特点:)是的,我错了。如果是作业,脚本中也会发生同样的事情。所以有时候,当括号分散在几行时,它会被忽略掉吗?@froderik不,你似乎没有理解它。括号总是被视为。在本例中,两个表达式在括号内对齐。啊哈-现在我明白了。谢谢你的解释!