下面的代码在Ruby中是什么意思?

||=

它的语法有什么意义或原因吗?


当前回答

irb(main):001:0> a = 1
=> 1
irb(main):002:0> a ||= 2
=> 1

因为a已经被设为1了

irb(main):003:0> a = nil
=> nil
irb(main):004:0> a ||= 2
=> 2

因为a是nil

其他回答

还请记住||=不是原子操作,因此,它不是线程安全的。根据经验,不要将它用于类方法。

ruby-lang语法。正确的答案是查看ruby-lang文档。所有其他解释都令人困惑。

谷歌

"ruby-lang文档缩写赋值"。

Ruby-lang文档

https://docs.ruby-lang.org/en/2.4.0/syntax/assignment_rdoc.html#label-Abbreviated+Assignment

除非x X = y 结束

除非x有值(不是nil或false),否则将其设为y

等于

X ||= y

Basically,

X ||= y表示

如果x有任何值,不要改变它的值,否则 将x设为y

这是默认的赋值表示法

例如:x ||= 1 这将检查x是否为nil。如果x确实为nil,那么它就会赋给它一个新值(在我们的例子中是1)

更明确的表示: 如果x == nil X = 1 结束