Explicación del código Ruby para construir estructuras de datos Trie

Así que tengo este código rubí que tomé de Wikipedia y modifiqué un poco:

@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

Primero ejecuté esto en la consola irb, y cada vez que salíanode, me sigue dando un hash vacío cada vez que{}, pero cuando invoco esa función construir con el parámetro'dogs' string, en realidad funciona y genera{"d"=>{"o"=>{"g"=>{"s"=>{}}}}}, lo cual es totalmente correcto.

Esta es probablemente más una pregunta de Ruby que la pregunta real sobre cómo funciona el algoritmo. Realmente no tengo el conocimiento adecuado de Ruby para descifrar lo que está sucediendo allí, supongo.

Respuestas a la pregunta(4)

Su respuesta a la pregunta