||= 在 Ruby 中是啥意思? [复制]

Posted

技术标签:

【中文标题】||= 在 Ruby 中是啥意思? [复制]【英文标题】:What does ||= mean in Ruby? [duplicate]||= 在 Ruby 中是什么意思? [复制] 【发布时间】:2011-04-17 14:08:09 【问题描述】:

可能重复:What does ||= mean in Ruby?

||= 在 Ruby 中是什么意思?

【问题讨论】:

该死,我搜索的时候找不到任何东西。 【参考方案1】:

它主要用作将变量初始化为某个值(如果尚未设置)的简写形式。

将语句视为返回x || (x = y)。如果x 有一个值(false 除外),则仅评估|| 的左侧(因为|| 短路),x 将是不会被重新分配。但是,如果xfalsenil,则会计算右侧,将x 设置为y,并返回y(赋值语句的结果是正确的) -手边)。

更多讨论请见http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case。

【讨论】:

x ||= y 的行为类似于 x = y unless x (如果我们假设 x 和 y 代表任意表达式而不一定是变量)x = x || y 相同(考虑x = x 不是空操作的情况)或x = y if x.nil?(考虑x 为假的情况)。 Jorg W Mittag 认为这是不正确的,在 his answer 中重复的问题。 这是错误的。请阅读Ruby-Forum.Com/topic/151660 以及其中提供的链接。 @Jörg 等人,我已经更新了我的答案。【参考方案2】:

x ||= y 经常被用来代替x = y if x == nil

【讨论】:

【参考方案3】:

这个想法与其他类似的运算符(+=*= 等)相同:a ||= ba = a || b

而且这个技巧不仅限于 Ruby:它适用于许多具有 C 根的语言。

编辑以击退反对者。 请参阅 Jörg 的链接之一以获得更准确的近似值,例如 this one。 这正是我不喜欢 Ruby 的原因:一切都不是它看起来的样子。

【讨论】:

值得注意的是,不是 C 或 C++ 或 Java。 @TokenMacGuy 我的意思是一般的“技巧”:从 'a = a @ b' 生成 'a @= b'。 这是错误的。请阅读Ruby-Forum.Com/topic/151660 以及其中提供的链接。

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

波浪号大于 (~>) 在 Ruby gem 依赖项中是啥意思? [复制]

&: 在红宝石中是啥意思,它是一个混合了符号的块吗? [复制]

“?”是啥意思?在 Erlang 中是啥意思? [复制]

“||”是啥意思在 var 语句中是啥意思? [复制]

“**”在python中是啥意思? [复制]

-> 在 C++ 中是啥意思? [复制]