目前正在做练习 28 链接:http://learnrubythehardway.org/book/ex28.html
在"常见的学生问题"下,有以下内容:
问题
为什么"test"&&"test">返回"test"或1&&1
返回1而不是true?答
Ruby 和许多语言喜欢将其中一个操作数返回到它们的布尔表达式,而不仅仅是 true 或 false。这意味着如果你做了假&&1,你会得到第一个操作数(假(,但如果你做真&&1,你会得到第二个(1(。玩一下这个。
但是,即使阅读了上面的答案,我仍然难以理解为什么
false && 1 返回 'false'
而
true &&1 返回 '1'
在IRB中。
前言:在 Ruby 中,只是false
本身和nil
false
。其他一切都被评估为true
.
false && 1
e1
和e2
都必须true
,以使整个表达式的计算结果为 true
。 e1
false
,因此无需评估 e2。 返回e1
(false
(。
true && 1
e1
是true
,所以我们需要评估甚至e2
,e2
是1
. 返回1
。