在Ruby中,|| =(or-equals)是什么意思?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (3)

以下代码在Ruby中的含义是什么?

||=

它的语法是否有任何意义或原因?

提问于
用户回答回答于

简而言之,a||=b意思是:如果aundefined, nil or false,则分配ba。否则,保持a完整。

用户回答回答于

a ||= b是一个条件赋值运算符。这意味着如果a未定义或,则评估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设置ab。如果a并且b都是局部变量,这种区别是不重要的,但如果它们是类的getter / setter方法则很重要。

进一步阅读:

扫码关注云+社区

领取腾讯云代金券