以下代码在 Ruby 中是什么意思?
||=
它的语法有什么意义或原因吗?
最佳答案
a ||= b
是一个条件赋值运算符。这意味着:
- 如果
a
未定义或 falsey ,然后评估b
并将a
设置为结果。 - 否则(如果定义了
a
并且计算结果为真),则不会计算b
,并且不会发生赋值。
例如:
a ||= nil # => nil
a ||= 0 # => 0
a ||= 2 # => 0
foo = false # => false
foo ||= true # => true
foo ||= false # => true
令人困惑的是,它看起来与其他赋值运算符(例如 +=
)相似,但行为不同。
a += b
转换为a = a + b
a ||= b
大致翻译为a || a = b
它是 a || 的近简写a = b
。不同之处在于,当 a
未定义时,a || a = b
会引发 NameError
,而 a ||= b
将 a
设置为 b
。如果 a
和 b
都是局部变量,这种区别并不重要,但如果其中一个是类的 getter/setter 方法,则这种区别很重要。
进一步阅读:
关于ruby - ||=(或等于)在 Ruby 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995593/