Ruby中的“|| =”构造是什么?

时间:2014-03-03 20:13:33

标签: ruby-on-rails ruby

在我关于使用ruby选项哈希的结构化方法的阅读中,我遇到了几次无法解释的编码“主题”。由于我不知道它叫什么,我很难查找它以了解更多信息。

以下是一个例子:

1  def example_method(input1, options={})
2 
3     default_options = {
4         :otherwise => "blue",
5         :be_nil => nil
6       }
7 
8     options[:be_nil] ||= options[:otherwise]
9 
10    # other code goes down here
11  end

所以,在第8行,你可以看到我在说什么。从我可以放在一起,代码行的行为类似于第三运算符。在一个条件下,它将变量设置为一个值...在不同的条件下,它将变量设置为不同的值。但是,在这种情况下,代码会更新存储在“options”变量中的哈希值。 这是正确的假设吗?此外,这个样式/操作符/功能是什么?

1 个答案:

答案 0 :(得分:0)

这是一项有条件的任务。如果为nil或false,则左侧的变量将被赋值。这是说的简称:

unless options[:be_nil]
  options[:be_nil] = options[:otherwise]
end