ruby中的|| = operator / s的功能是什么?

时间:2016-02-19 19:37:05

标签: ruby

我最近看到的代码看起来像这样

  @a ||=
          if x
            x/2
          else
            2 * x

|| =

的用途是什么

1 个答案:

答案 0 :(得分:1)

这意味着如果变量为false,则执行赋值。

因此,如果@a为假(例如为零或假),则会运行代码,并将其返回值分配给@a

这是因为如果第一个操作数为真,则OR语句为真,因此不需要进一步执行。

它等同于更长的表达式:

unless @a
  if x
    @a = x/2
  else
    @a = 2*x # though this line is kind of weird if x is falsey^^
  end
end