一种指定和初始化地图值类型的方法?

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)

以避免必须从改变一个字的第一次出现的类型NilInteger.

Zac*_*emp 11

您可以在哈希中设置默认值,如下所示:

individual_words = Hash.new(0)
Run Code Online (Sandbox Code Playgroud)

然后当你遇到一个单词时,无论它的键是否在哈希中,你所要做的就是:

individual_words[word] += 1
Run Code Online (Sandbox Code Playgroud)