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

时间:2010-09-27 03:34:52

标签: ruby

  

可能重复:
  What does ||= mean in Ruby?

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

3 个答案:

答案 0 :(得分:9)

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

将该语句视为返回x || (x = y)。如果x具有值(false除外),则只会评估||的左侧(因为|| 短圈 ),x将不会被重新分配。但是,如果xfalsenil,则会评估右侧,将x设置为yy将{}返回(赋值语句的结果是右侧)。

有关详细讨论,请参阅http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case

答案 1 :(得分:4)

通常使用

x ||= y代替x = y if x == nil

答案 2 :(得分:3)

这个想法与其他类似的运算符(+=*=等)相同:
a ||= ba = a || b

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

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