ruby – 为什么括号内的换行会改变算术结果?

前端之家收集整理的这篇文章主要介绍了ruby – 为什么括号内的换行会改变算术结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么以下表达式会解决它们的问题?括号应该比新行具有更高的优先级,不是吗?
3 - ( 1 + 1 )
# => 1

3 - ( 1
     + 1 )
# => 2

省略加号也可以使表达式求值为2:

3 - ( 1
      1 )
# => 2

如果我声明为连续换行符(转义)或将加号移到第一行,则会实现所需的行为:

3 - ( 1 \
     + 1 )
# => 1

3 - ( 1 +
      1 )
# => 1

解决方法

这是因为Ruby将新行识别为表达式的结尾,除非表达式不完整.例如,
(1
+ 1)

是相同的

(1;
+1)

因为括号内的最后一个表达式被返回,所以它与1相同.这与1相同.

当你在一行的末尾时,表达式是不完整的,因此继续到下一行.这使得:

3 - ( 1 +
      1 )

被解释为3 – (1 1).

猜你在找的Ruby相关文章