||= 在Ruby中做了啥[重复]
Posted
技术标签:
【中文标题】||= 在Ruby中做了啥[重复]【英文标题】:What does ||= do in Ruby [duplicate]||= 在Ruby中做了什么[重复] 【发布时间】:2011-01-02 18:28:02 【问题描述】:我使用 Ruby 已经有一段时间了,我一直看到这个:
foo ||= bar
这是什么?
【问题讨论】:
【参考方案1】:如果(且仅当)foo
是 nil
或 false
时,这会将 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
是真值(不是false
或nil
)。
【讨论】:
应该是:除非foo
是真实的,真实的意思是:不是false
或nil
。【参考方案4】:
如果您将它用于实例变量,您可能希望避免使用它。那是因为
@foo ||= bar
如果 @foo
之前未初始化,则可以发出警告。您可能想使用
@foo = bar unless defined?(@foo)
或
@foo = bar unless (defined?(@foo) and @foo)
取决于您是否只想检查@foo 是否已初始化,或者检查@foo 是否具有真实性(即不是nil
或false
)。
【讨论】:
以上是关于||= 在Ruby中做了啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章