我已经使用Ruby有一段时间了,我经常看到这个:
foo ||= bar
这是什么?
foo
是nil
或false
时,这将把bar
赋值给foo
。
编辑:或者是false,谢谢@mopoke。
运算符||=是表达式的简写形式:
x = x || "default"
运算符||=可以简写类似以下代码:
如果x为nil,则x = "(some fallback value)"
来自:http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators
如果 foo
不是真值(不是 false
或 nil
),则将 bar
赋值给 foo
。
如果您正在使用它作为实例变量,您可能希望避免使用它。那是因为
@foo ||= bar
如果@foo
之前未初始化,可以发出警告。您可能想使用
@foo = bar unless defined?(@foo)
或者
@foo = bar unless (defined?(@foo) and @foo)
根据您想要仅检查 @foo 是否初始化,还是检查 @foo 是否具有真实性(即不是 nil
或 false
)。
foo
是真值,其中真值的意思是:不是false
或nil
。 - yfeldblum