Valor padrão de hash (com bons exemplos)

Nem todo mundo sabe que o construtor da classe Hash em ruby ​​pode ser usado para inicializar o valor padrão de hash.

Por exemplo, se nossos valores de hash forem matrizes, em vez de:

h       = {}
h
[:foo] = []
h
[:foo] << :bar

Podemos inicializar o hash desta maneira:

h = Hash.new { |key, value| key[value] = [] }
h
[:foo] << :bar

Isso é muito mais rubi 🙂

E como você retornaria quantas vezes cada palavra está em algum documento (ou seja, matriz?):

Eu escreveria esse código:

class Inc

attr_reader
:value

def initialize
@value = 0
end

def inc
@value += 1
end

def inspect
value
end
end

h
= Hash.new { |k,v| k[v] = Inc.new }

%(some array of words).each { |word| h[word].inc }

E agora harmazena palavras como chaves e contagens de palavras na matriz como valores.