Ruby -- 为什么 += 会增加我的字符​​串的数量?

Ruby -- Why does += increase the number for my string?

在以下代码中,"seven" 的值从 1 更改为 2

word_counts = Hash.new(0)
sample = "If seven maids with seven mops"
sample.split.each do |word|
  word_counts[word.downcase] += 1
  puts word_counts
end

输出:

{}
{"if"=>1}
{"if"=>1, "seven"=>1}
{"if"=>1, "seven"=>1, "maids"=>1}
{"if"=>1, "seven"=>1, "maids"=>1, "with"=>1}
{"if"=>1, "seven"=>2, "maids"=>1, "with"=>1}
{"if"=>1, "seven"=>2, "maids"=>1, "with"=>1, "mops"=>1}

有人可以解释为什么它从 1 变成了 2 吗?

好的,我试试..

word_counts[word.downcase] += 1表示word_counts[word.downcase] = word_counts[word.downcase] + 1。现在,在第五次迭代中 word 等于 'seven',所以它等于 word_counts['seven'] = word_counts['seven'] + 1。但是 word_counts['seven']1,所以它变成了 2

拆分字符串时,您会得到包含两个字符串的数组 "seven",因为句子中出现了两次该词。

"If seven maids with seven mops".split #=> ["If", "seven", "maids", "with", "seven", "mops"]