Ruby 1.9.2中“|| =”做了什么?

时间:2011-10-10 15:05:33

标签: ruby variable-assignment

params[:user][:role_ids] ||= []

它做了什么?

ruby​​ -v = 1.9.2p290

6 个答案:

答案 0 :(得分:5)

如果[]params["user][:role_ids] 或其他有价值的值,则params["user][:role_ids]会将nil分配给params["user][:role_ids]

否则,它会保留原始值variable = nil variable ||= "string" puts variable # "string" variable2 = "value" variable2 ||= "string" puts variable2 # "value"

示例

{{1}}

答案 1 :(得分:2)

如果params[:user][:role_ids]nil,则会使用[]进行初始化,否则params[:user][:role_ids]会保持其值

答案 2 :(得分:1)

如果尚未指定左侧值,请将其指定给右侧值。如果已分配,请将其保留为自身。迈克尔哈特尔的RoR tutorial site可以找到一个很好的解释。

答案 3 :(得分:1)

它是memoize运算符,它执行以下两项操作之一:

  1. 如果左侧的值不是nil,则只返回值
  2. 如果左侧的值为nil(或未定义),则设置它。

答案 4 :(得分:1)

Ruby中的条件赋值。您可以在此处详细了解:Ruby Operators

答案 5 :(得分:1)

如果尚未设置变量,则为变量设置值。含义

class Something
  attr_accessor :some_value

def perform_action
  @some_value ||= "Mom"
  puts @some_value
end

foo = Something.new
foo.perform_action -> "Mom"
foo.some_value = "Dad"
foo.perform_action -> "Dad"