什么|| =在Ruby中意味着什么?
可能重复:
什么|| =在Ruby中意味着什么?
什么||=
在Ruby中意味着什么?
它主要用作将变量初始化为某个值的缩写forms(如果尚未设置)。
将该语句视为返回x || (x = y)
x || (x = y)
。 如果x
有一个值(不是false
),只有||
的左边 将被重新评估(因为||
short-circuts ),并且不会重新分配x
。 但是,如果x
为false
或nil
,则将评估右侧,将x
设置为y
,并返回y
(赋值语句的结果为右侧)。
有关更多讨论,请参见http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case 。
x = y if x == nil
则经常使用x ||= y
而不是x = y if x == nil
这个想法与其他类似的运算符( +=
, *=
等)相同:
a ||= b
是a = a || b
a = a || b
而且这个技巧并不仅限于Ruby:它通过C根传递许多语言。
编辑以击退downvoters。
请参阅Jörg的链接之一以获得更准确的近似值,例如这个 。
这正是我不喜欢Ruby的原因:它似乎没有什么。