Ruby || =操作员表现得很有趣

met*_*zol 1 ruby operators

根据我的理解,a ||= 7意味着以下内容:if a有值,继续使用该值,但如果没有,则将其设置为7.

这是发生了什么.

如果我有ab作为:

a = true

b = false
Run Code Online (Sandbox Code Playgroud)

然后

a ||= b =>是的

(在我的解释中:因为'a'有价值,它仍然存在,并且不等于'假' - 到目前为止一直很好.)


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

a = false

b = true
Run Code Online (Sandbox Code Playgroud)

那么a ||= b =>真

所以在这种情况下我的逻辑不起作用,因为它应该返回false,因为"因为'a'有一个值,所以不应该赋予'b'的值",这显然发生在这里.

我错过了什么吗?

Mar*_*pka 7

a ||= b
Run Code Online (Sandbox Code Playgroud)

相当于

a || a = b
Run Code Online (Sandbox Code Playgroud)

这意味着将b值分配给aif afalsy,即falsenil.