加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:05:17 所属栏目:百科 来源:网络整理
导读:为什么以下表达式会解决它们的问题?括号应该比新行具有更高的优先级,不是吗? 3 - ( 1 + 1 )# = 13 - ( 1 + 1 )# = 2 省略加号也可以使表达式求值为2: 3 - ( 1 1 )# = 2 如果我声明为连续换行符(转义)或将加号移到第一行,则会实现所需的行为: 3 - ( 1 +
为什么以下表达式会解决它们的问题?括号应该比新行具有更高的优先级,不是吗?
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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读