什么是|| =在Ruby语言中意味着什么?
可能重复:
什么|| =在Ruby中意味着什么?
下面的行是什么意思?
a ||= {} a ||= 1
在irb中,它总是为上述两行返回a的类,作为哈希。 提前致谢。
||=
是赋值运算符,它返回赋值。 a ||= b
等同于语句a || a = b
a || a = b
这意味着如果a
被设置并且具有一些真值,那么它保持不变,否则它取b
的值。
在你的例子中, a
只被设置一次,这解释了你注意到的行为。
a ||= {} a ||= 1 // a is still {}
我见过的典型用法是初始化静态变量,即。
class Foo def self.bar return @bar ||= {} end end
编辑:
值得一提的是||=
是一个短路运算符。 这意味着在a ||= b
的情况下,只有a = b
的赋值。 在a
是非假的情况下,永远不会有a = a
的赋值。 这有点迂腐,但在某些(非常)边缘情况下很重要。
有关更多信息,请阅读|| =线程和页面的权威列表 。
它的意思是
a = a || {}
即
a = {} unless a
你可以这样读“a || = {}”。 如果定义了“a”,则忽略右侧的表达式。 否则,设置“a”等于右侧的表达式。 在第一行中,“a”可能未定义,因此该行将“a”设置为右侧的表达式,即空哈希。 在第二行,“a”已设置为{},因此忽略右侧的值为1的表达式。