以下代码在 Ruby 中是什么意思?
||=
它对语法有任何意义或理由吗?
这个问题在 Ruby 邮件列表和 Ruby 博客上已经被讨论得如此频繁,以至于现在 Ruby 邮件列表上甚至还有一些线程,其唯一目的是收集到Ruby 邮件列表上讨论这个问题的 所有其他线程 的链接.
这是一个:||=(或等于)线程和页面的最终列表
如果您 真的 想知道发生了什么,请查看Ruby Language Draft Specification的第 11.4.2.3 节“Abbreviated assignments” 。
作为第一个近似值,
a ||= b
相当于
a || a = b
并且 不 等于
a = a || b
但是,这只是第一个近似值,尤其a是在未定义的情况下。语义也不同,具体取决于它是简单的变量赋值、方法赋值还是索引赋值:
a
a ||= b a.c ||= b a[c] ||= b
都被区别对待。