Explicação do código Ruby para construir estruturas de dados Trie

Então, eu tenho esse código ruby que peguei na wikipedia e modifiquei um pouco:

@trie = Hash.new()
def build(str)
    node = @trie
    str.each_char { |ch|
      cur = ch
      prev_node = node
      node = node[cur]
      if node == nil
        prev_node[cur] = Hash.new()
        node = prev_node[cur]
      end
    }
  end

build('dogs')

puts @trie.inspect

Executei isso pela primeira vez no console irb e cada vez que saínode, ele continua me dando um hash vazio toda vez{}, mas quando eu realmente invoco essa função build com o parâmetro'dogs' string, ele realmente funciona e gera{"d"=>{"o"=>{"g"=>{"s"=>{}}}}}, o que é totalmente corret

Essa é provavelmente mais uma questão de Ruby do que a pergunta real sobre como o algoritmo funciona. Eu realmente não tenho conhecimento suficiente de Ruby para decifrar o que está acontecendo lá, eu ach

questionAnswers(4)

yourAnswerToTheQuestion