2012-05-11 117 views
0

我有一个哈希值,所有值都是数组。所以它看起来像下面这样:Ruby + =操作抛出错误

my_hash = {:key  => ["some string", "some string"], 
      :other_key => ["some string"]} 

现在我想在这个散列中的所有字符串的计数。

所以我做:

my_hash.each_value do |value| 
    string_count += value.count 
end 

但我得到的错误:undefined method '+' for nil:NilClass

但我的价值数组是永远为零...... 例如,当我做的:

my_hash.each_value do |value| 
    puts value.count 
end 

我得到:

2 
1 
2 
2 
2 
etc. 

那么我做错了什么? Thx in advance :)

回答

3

我想你需要在循环之前初始化string_count

string_count = 0 
my_hash.each_value do |value| 
    string_count += value.count 
end 
2

string_countnil

string_count = 0 
my_hash.each_value do |value| 
    string_count += value.count 
end 
1

Is * string_count *是否已初始化?
(你的代码中是否有“string_count = 0”?)

1

你必须先初始化string_count。

0

在迭代器之前初始化string_count将解决这个问题。

string_count = 0 

my_hash.each_value do |value| 
    string_count += value.count 
end 

#=> 3