我已经使用Ruby一段时间了,我一直看到这个:
foo ||= bar
这是什么?
答案 0 :(得分:7)
如果(且仅当)bar
为foo
或foo
,这会将nil
分配给false
。
编辑:或者错误,谢谢@mopoke。
答案 1 :(得分:7)
运算符|| =是表达式的简写形式:
x = x || “默认”
运算符|| =可以是代码的简写:
x =“(某些后备值)”如果是x.nil?
来自:http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators
答案 2 :(得分:2)
将bar
分配给foo
,除非foo
是真值(不是false
或nil
)。
答案 3 :(得分:1)
如果您将其用于实例变量,则可能需要避免使用它。那是因为
@foo ||= bar
如果先前未初始化@foo
,则可以发出警告。您可能想要使用
@foo = bar unless defined?(@foo)
或
@foo = bar unless (defined?(@foo) and @foo)
取决于您是否只想检查@foo是否已初始化,或检查@foo是否具有真实性(即不是nil
或false
)。