在Ruby中,||=的作用是什么?

6

我已经使用Ruby有一段时间了,我经常看到这个:

foo ||= bar

这是什么?

4个回答

9
如果(且仅当)foonilfalse时,这将把bar赋值给foo

编辑:或者是false,谢谢@mopoke。


7

2

如果 foo 不是真值(不是 falsenil),则将 bar 赋值给 foo


2
除非 foo 是真值,其中真值的意思是:不是 falsenil - yfeldblum

1

如果您正在使用它作为实例变量,您可能希望避免使用它。那是因为

@foo ||= bar

如果@foo之前未初始化,可以发出警告。您可能想使用

@foo = bar unless defined?(@foo)

或者

@foo = bar unless (defined?(@foo) and @foo)

根据您想要仅检查 @foo 是否初始化,还是检查 @foo 是否具有真实性(即不是 nilfalse)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接