小编典典

||= (or-equals) 在 Ruby 中是什么意思?

all

以下代码在 Ruby 中是什么意思?

||=

它对语法有任何意义或理由吗?


阅读 125

收藏
2022-03-23

共1个答案

小编典典

这个问题在 Ruby 邮件列表和 Ruby 博客上已经被讨论得如此频繁,以至于现在 Ruby 邮件列表上甚至还有一些线程,其唯一目的是收集到Ruby
邮件列表上讨论这个问题的 所有其他线程 的链接.

这是一个:||=(或等于)线程和页面的最终列表

如果您 真的 想知道发生了什么,请查看Ruby Language Draft
Specification
的第 11.4.2.3
节“Abbreviated assignments” 。

作为第一个近似值,

a ||= b

相当于

a || a = b

并且 等于

a = a || b

但是,这只是第一个近似值,尤其a是在未定义的情况下。语义也不同,具体取决于它是简单的变量赋值、方法赋值还是索引赋值:

a    ||= b
a.c  ||= b
a[c] ||= b

都被区别对待。

2022-03-23