可能重复:
Ruby中的|| =是什么意思?
下面的行是什么意思?
a ||= {}
a ||= 1
Run Code Online (Sandbox Code Playgroud)
在irb中,它总是为上述两行返回a的类,作为哈希.提前致谢.
Mat*_*ley 16
||=是赋值运算符,它返回指定的值.a ||= b等于声明a || a = b,如果a设置并具有一些真值,则它保持不变,否则取值为b.
在您的示例a中,只设置一次,这解释了您注意到的行为.
a ||= {}
a ||= 1 // a is still {}
Run Code Online (Sandbox Code Playgroud)
我见过的典型用法是初始化静态变量,即.
class Foo
def self.bar
return @bar ||= {}
end
end
Run Code Online (Sandbox Code Playgroud)
编辑:
值得一提的是,这||=是一个短路运营商.这意味着a ||= b它只会有一个赋值a = b.a = a在这种情况下永远不会有a非假的转让.这有点迂腐,但在某些(非常)边缘情况下很重要.
有关更多信息,请阅读|| =线程和页面的权威列表.
它的意思是
a = a || {}
Run Code Online (Sandbox Code Playgroud)
IE
a = {} unless a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3947 次 |
| 最近记录: |