Ant*_*neG 1 ruby initialization map
我想计算一行文字中的所有单词.我正在使用地图来执行此操作,其中包含键和值的整数.我不知道如何告诉Ruby所有的值都是整数.它迫使我在迭代器块中放置一个丑陋的分支:
# in the constructor
@individual_words = {}
def count_words_from( text_line )
text_line.each do |line|
line.scan(/\p{Word}+/)
.reject{ |string| string =~ /\d/ }
.each do |word|
if @individual_words[ word ] == nil then # This is ugly
@individual_words[ word ] = 1 # This is ugly as well
else
@individual_words[ word ] += 1
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
简单来说,我想做类似这样的Java行:
Map<String, Integer> individualWords;
Run Code Online (Sandbox Code Playgroud)
以避免必须从改变一个字的第一次出现的类型Nil来Integer.
Zac*_*emp 11
您可以在哈希中设置默认值,如下所示:
individual_words = Hash.new(0)
Run Code Online (Sandbox Code Playgroud)
然后当你遇到一个单词时,无论它的键是否在哈希中,你所要做的就是:
individual_words[word] += 1
Run Code Online (Sandbox Code Playgroud)