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