在Ruby中做什么|| =做什么

时间:2010-01-08 02:59:28

标签: ruby

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

foo ||= bar

这是什么?

4 个答案:

答案 0 :(得分:7)

如果(且仅当)barfoofoo,这会将nil分配给false

编辑:或者错误,谢谢@mopoke。

答案 1 :(得分:7)

运算符|| =是表达式的简写形式:

x = x || “默认”

运算符|| =可以是代码的简写:

x =“(某些后备值)”如果是x.nil?

来自:http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators

答案 2 :(得分:2)

bar分配给foo,除非foo是真值(不是falsenil)。

答案 3 :(得分:1)

如果您将其用于实例变量,则可能需要避免使用它。那是因为

@foo ||= bar

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

@foo = bar unless defined?(@foo)

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

取决于您是否只想检查@foo是否已初始化,或检查@foo是否具有真实性(即不是nilfalse)。

相关问题