2012-05-11 93 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