我是 Ruby 新手,我做了以下事情:
c = {}
# Some code in the middle
c['a'] = c['a'] or 0
现在我希望它像这样工作:如果c['a']
is nil
,则c['a'] or 0
返回 0。所以 的值c['a']
应该是 0。
然而 的c['a']
值为nil
。为什么会这样?
我是 Ruby 新手,我做了以下事情:
c = {}
# Some code in the middle
c['a'] = c['a'] or 0
现在我希望它像这样工作:如果c['a']
is nil
,则c['a'] or 0
返回 0。所以 的值c['a']
应该是 0。
然而 的c['a']
值为nil
。为什么会这样?
or
与||
Ruby 中的不同。你有什么变成这样分组:
(c['a'] = c['a']) or 0
这基本上什么都不做。您应该||
改用:
c['a'] = c['a'] || 0
或者简单地说:
c['a'] ||= 0
请注意/与and
/&&
具有相同的行为。or
||
=
具有比 更高的优先级or
,因此您需要括号来使其执行您期望的操作:
c['a'] = (c['a'] or 0)
或者||
像往常一样使用:)