ruby中的false && nil和nil && false

Zzz*_*Zzz 2 ruby

为什么nil && false返回nilfalse && nil返回false

我在nil ||中读到了最佳答案 假和假|| 在红宝石中没有.在我看来,这两个nilfalse评估为falsy价值,但为什么这两个表达式返回的值不同?

Yu *_*Hao 9

规则很简单:&&如果它是假的,则返回它的第一个参数.否则,它会评估并返回其第二个参数.

所以

nil && false
Run Code Online (Sandbox Code Playgroud)

false && nil
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,第一个参数都是假的.(nil并且false是评估falsy的唯一两个值),因此表达式的结果是第一个参数.

第二个参数也恰好是假的事实并不重要.实际上,由于短路,第二个参数未被评估.