"||=" 在 Ruby 1.9.2 中有啥作用? [复制]
Posted
技术标签:
【中文标题】"||=" 在 Ruby 1.9.2 中有啥作用? [复制]【英文标题】:What does "||=" do in Ruby 1.9.2? [duplicate]"||=" 在 Ruby 1.9.2 中有什么作用? [复制] 【发布时间】:2011-12-04 14:45:03 【问题描述】:params[:user][:role_ids] ||= []
它有什么作用?
ruby -v = 1.9.2p290
【问题讨论】:
重复:What does||=
mean in Ruby?,What does ||=
mean in Ruby?,what is ||=
in ruby?,Double Pipe Symbols in Ruby Variable Assignment?,What does the “||=
” operand stand for in ruby,what does a ||=
mean in Ruby language?,Is the ruby operator ||=
intelligent?,...
…What does ||=
mean?,可能还有很多其他人。另见The definitive list of ||=
(OR Equal) threads and pages。 请、请、请不要问重复的问题。它只是将信息分散在站点周围,这些信息最好在一个地方找到。谢谢!
@JörgWMittag:为什么要告诉 393 代表用户不要问重复的问题,而不是告诉 4 个拥有超过 3K 代表(因此拥有接近权限)的人不要回答重复的问题?
【参考方案1】:
如果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"
【讨论】:
【参考方案2】:如果params[:user][:role_ids]
是nil
,它会被初始化为[]
,否则params[:user][:role_ids]
会进一步保持其值
【讨论】:
【参考方案3】:如果尚未分配左侧值,请将其分配给右侧值。如果已分配,请将其保留为自身。可以在 Michael Hartl 的 RoR tutorial site 上找到一个很好的解释。
【讨论】:
【参考方案4】:它是 memoize 操作符,它做以下两件事之一:
-
如果左边的值不为nil,则直接返回值
如果左侧的值为 nil(或未定义),则设置它。
【讨论】:
【参考方案5】:这是 Ruby 中的条件赋值。你可以在这里阅读更多信息:Ruby Operators
【讨论】:
【参考方案6】:如果变量尚未设置,它会为变量设置一个值。意义
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"
【讨论】:
以上是关于"||=" 在 Ruby 1.9.2 中有啥作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章