2014-10-09 67 views
0

我是編程新手,並試圖理解爲什麼操作符幾乎總是用於添加,在Ruby中追加散列鍵值對。爲什麼添加運算符會添加散列鍵值對?

下面的代碼片段是從務實工作室紅寶石課程:

letters = {"c" => 3, "e" => 1, "l" => 1, "n" => 1, "t" => 1, "x" => 8, "y" => 4} 
point_totals = Hash.new(0) 

"excellently".each_char do |char| 
    point_totals[char] += letters[char] 
end 

puts point_totals 
puts point_totals.values.reduce(0, :+) 

輸出

{"e"=>3, "x"=>8, "c"=>3, "l"=>3, "n"=>1, "t"=>1, "y"=>4} 
23 

爲什麼語言使用+=代替<<

回答

2

你有+=,因爲您要添加的letters[char]價值points_total[char]

<<用於追加到一個數組。

+0

'<<'還附加到'String' – engineersmnky 2014-10-09 21:00:33

+0

所以基本上,這就像一個字符串的map方法嗎? – nipponese 2014-10-09 21:27:57

+0

不確定你的意思。當你想在每個元素上應用一個函數並生成一個新的數組時,會使用'map'。您的代碼基本上會計算字符串中每個字符的總點數。 – rohit89 2014-10-09 21:37:19

1

您不是追加鍵值對,而是增加與points_total散列中的char鍵相關聯的值。

相關問題