【发布时间】:2014-07-18 11:15:42
【问题描述】:
如果我尝试增加一个在散列中尚不存在的键的值,像这样
h = Hash.new
h[:ferrets] += 1
我收到以下错误:
NoMethodError: undefined method `+' for nil:NilClass
这对我来说很有意义,而且我知道这一定是一个非常简单的问题,但我在 SO 上找不到它。如果我事先不知道我将拥有哪些密钥,我该如何添加和增加这些密钥?
【问题讨论】:
-
答案给出了处理这种情况的正常方法,但你也应该知道你可以简单地写:
if h.has_key?(:ferrets); h[:ferrets] += 1; else h[:ferrets] = 1; end。 Hash#has_key? 方法有,不是一个,不是两个,而是三个别名(即,可以使用任何一个):key?、include?和member?。