什么|| =在Ruby中意味着什么?

可能重复:
什么|| =在Ruby中意味着什么?

什么||=在Ruby中意味着什么?

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

将该语句视为返回x || (x = y) x || (x = y) 。 如果x有一个值(不是false ),只有||的左边 将被重新评估(因为|| short-circuts ),并且不会重新分配x 。 但是,如果xfalsenil ,则将评估右侧,将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 ||= ba = a || b a = a || b

而且这个技巧并不仅限于Ruby:它通过C根传递许多语言。

编辑以击退downvoters。
请参阅Jörg的链接之一以获得更准确的近似值,例如这个 。
这正是我不喜欢Ruby的原因:它似乎没有什么。