我是 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)
或者||像往常一样使用:)