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"]
在以下代码中,"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"]