1

我是 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。为什么会这样?

4

2 回答 2

4

or||Ruby 中的不同。你有什么变成这样分组:

(c['a'] = c['a']) or 0

这基本上什么都不做。您应该||改用:

c['a'] = c['a'] || 0

或者简单地说:

c['a'] ||= 0

请注意/与and/&&具有相同的行为。or||

于 2012-10-14T15:44:53.103 回答
2

=具有比 更高的优先级or,因此您需要括号来使其执行您期望的操作:

c['a'] = (c['a'] or 0)

或者||像往常一样使用:)

于 2012-10-14T15:44:23.350 回答