“|| =”如何运作?

时间:2012-06-20 15:53:24

标签: ruby

  

可能重复:
  What does ||= (or equals) mean in Ruby?

我正在学习Ruby并且对以下代码感到困惑。我能理解它的作用,但无法理解这是如何工作的。

h = Hash.new
h['key1'] ||= 'value1'
=> "value1"

p h
=> {"key1"=>"value1"}

3 个答案:

答案 0 :(得分:0)

给出Hash

hash = {}

这个表达式:

hash[:key] ||= :value

扩展为:

hash[:key] || hash[:key] = :value

Ruby的逻辑运算符short circuit,这意味着hash[:key] = :value仅在hash[:key]falsenil的情况下执行。< / p>

如果它是其他任何东西,它的值就足以确定logical disjunction的结果,并且不会评估表达式的其余部分。

基本不同于:

hash[:key] = hash[:key] || :value

在这种情况下,[]=方法将以任一方式调用,唯一的区别是它将收到哪个参数::value如果hash[:key]falsenil,或hash[:key]本身的价值。

答案 1 :(得分:-1)

这是缩写的赋值伪操作符。其中有11个;最常见的是:

x += y #expands to x = x+y

||=也是这样:

x ||= y expands to x = x||y

适用于+, - ,,/,%,* ,&amp;&amp;,||,&amp;,|,^,&lt;&lt;,&gt;&gt;。< / p>

答案 2 :(得分:-2)

Hash.new中的默认值为nil

所以h['key1'] ||= 'value1'就像 “如果key ='key1'还没有相应的值,则将值设为'value1'”