Объяснение кода Ruby для построения структур данных Trie

Итак, у меня есть этот рубиновый код, который я взял из википедии и немного изменил:

@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

Я сначала запускал его на консоли irb, и каждый раз выводил узел , он просто продолжает выдавать мне пустой хеш каждый раз {} , но когда я действительно вызываю эту сборку функции с параметром 'dog' строка, это действительно работает, и выводит {"d" => {"o" => {"g" => {"s" => {}}}}} , что совершенно верно.

Вероятно, это скорее вопрос Ruby, чем сам вопрос о том, как работает алгоритм. Думаю, у меня действительно недостаточно знаний Ruby, чтобы понять, что там происходит.

6
задан Phrogz 28 January 2012 в 02:44
поделиться