Ruby 1.9.2中“|| =”做了什么?
params[:user][:role_ids] ||= []
它有什么作用?
ruby -v = 1.9.2p290
如果params["user][:role_ids]
为nil
或其他假值,它会将[]
分配给params["user][:role_ids]
…
否则,它保留params["user][:role_ids]
的原始值
例
variable = nil variable ||= "string" puts variable # "string" variable2 = "value" variable2 ||= "string" puts variable2 # "value"
如果params[:user][:role_ids]
为nil
,则会使用[]
初始化,否则params[:user][:role_ids]
进一步保持其值
如果尚未指定左侧值,请将其指定给右侧值。 如果已分配,请将其保留为自身。 可以在Michael Hartl的RoR教程网站上找到一个很好的解释。
它是memoize运算符,它执行以下两项操作之一:
- 如果它左边的值不是nil,它只返回值
- 如果它左边的值是nil(或未定义),则设置它。
这是Ruby中的条件赋值 。 您可以在这里阅读更多相关信息: Ruby Operators
如果尚未设置变量,它会为变量设置一个值。 含义
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"