ruby - ||=(或等于)在 Ruby 中是什么意思?

标签 ruby operators

以下代码在 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 ||= ba 设置为 b。如果 ab 都是局部变量,这种区别并不重要,但如果其中一个是类的 getter/setter 方法,则这种区别很重要。

进一步阅读:

关于ruby - ||=(或等于)在 Ruby 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995593/

相关文章:

prolog - 斜线(/)在序言中做什么?

C 运算符和评估

ruby-on-rails - Ruby 中 PI、cos 的类型是什么

ruby-on-rails - 使用 Sidekiq 进行幂等设计 Ruby on Rails 后台作业

ruby-on-rails - Rails 中的另一个部分

ruby-on-rails - 你如何让这个 div 环绕图像链接?

iphone - 在 iPad 上运行 Ruby 解释器

python - Pycharm 与使用相等运算符执行的 None 比较

c - C 中波浪号运算符查询的工作方式不同

python - 运算符(operator)模块和 pandas