精简脚本如下:
现在,我知道
然而,我希望解释器会严格处理
有人能解释一下
z1 = (12 -
2) / (5)
z2 = (12
- 2) / (5)
puts(z1.to_s + " " + z2.to_s)
这将会得到:
$ ruby rubytest.rb
2 -1
现在,我知道
z1
是正确的方法,因为行末悬挂运算符被解释为自动延续该行。然而,我希望解释器会严格处理
z2
案例,并告诉我语句是不完整的,或者其第二行是无意义的。但它“很好地”处理了它并给出了“-1”的答案。它是试图表现得自信,不承认自己困惑,并希望这个错误答案不会被注意到吗?有人能解释一下
z2
评估实际发生了什么,为什么是“-1”,为什么没有语法错误,并且是否有一个使用此行为的示例(或者我们应该提出请求以删除它)?
(2 + <new line here> -2/5)
这将使2-1=1。疯狂。 - radubogdan(
,在第二行上写-2)/5
就足够了。 - Cary Swoveland(12;
(- 2 / 5)
,因为Ruby会返回最后一个被评估的东西,所以结果是-1? - Anthony(12; -2) / 5
的结果也是-1,而且我相信 OP 的 z2 和这个是等价的。我刚刚发现了关于这个问题的这个有趣的信息。 - Anthony