||= 在Ruby中做了啥[重复]

Posted

技术标签:

【中文标题】||= 在Ruby中做了啥[重复]【英文标题】:What does ||= do in Ruby [duplicate]||= 在Ruby中做了什么[重复] 【发布时间】:2011-01-02 18:28:02 【问题描述】:

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

foo ||= bar

这是什么?

【问题讨论】:

【参考方案1】:

如果(且仅当)foonilfalse 时,这会将 bar 分配给 foo

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

【讨论】:

【参考方案2】:

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

x = x || “默认”

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

x = "(some fallback value)" if x.nil?

发件人:http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators

【讨论】:

【参考方案3】:

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

【讨论】:

应该是:除非foo是真实的,真实的意思是:不是falsenil【参考方案4】:

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

@foo ||= bar

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

@foo = bar unless defined?(@foo)

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

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

【讨论】:

以上是关于||= 在Ruby中做了啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

〜运算符在Python中做了啥[重复]

print(S[::2],[1::2]) 这行在下面的程序中做了啥[重复]

*::(星号双冒号)在Ruby中做了啥?

(一元)* 运算符在这段 Ruby 代码中做了啥?

哈希在python中做了啥?

“^=”运算符在这个查找非成对数算法中做了啥? [复制]