Ruby ||= 运算符搞笑

Ruby ||= operator acting funny

据我了解,a ||= 7的意思如下: 如果 a 有值,则继续使用该值,但如果没有,则将其设置为 7。

下面是发生的事情。

如果我有 ab 作为:

a = true

b = false

然后

a ||= b => 真

(在我的解释中:因为 'a' 确实有一个值,它仍然是那个值,并且不等同于 'false' - 到目前为止还不错。)


但是,如果我将它们切换为:

a = false

b = true

然后 a ||= b => 真

所以在这种情况下,我的逻辑不起作用,因为它应该 return 为假,因为 "since 'a' has a value, it should not be assigned the value of 'b'",这显然发生在这里。

我是不是漏掉了什么?

a ||= b

等同于

a || a = b

这意味着如果 afalsy,则 b 值被分配给 a,即 falsenil.