我想计算一行文本中的所有单词。我正在使用地图来执行此操作,其中键表示单词,值表示整数。我不知道如何告诉 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
简单来说,我想做这样的 Java 行:
Map<String, Integer> individualWords;
以避免必须将单词第一次出现的类型从 更改Nil
为Integer
。