2016-05-24 9 views
3

У меня вопрос о рубиновых драгоценных камнях. Я пишу код в рубине, и я хочу использовать дерево. Я решил использовать класс Tree::TreeNode. См. Здесь http://www.rubydoc.info/github/evolve75/RubyTree/Tree/TreeNode для документации.Методы из дерева :: TreeNode не работает

Это мой первый раз, используя драгоценный камень. Я запустил sudo gem install tree в терминал и добавил require 'tree' в начало моего рубинового файла. По большей части это работает. Я могу инициализировать узлы, и большинство методов работают. Однако некоторые методы, такие как #each_leaf и #children, не работают. Вот пример кода:

require 'tree' 
node1 = Tree::TreeNode.new('node1',1) 
node2 = Tree::TreeNode.new('node2',2) 
node1.add(node2) 
node1.each_leaf { |node| puts "name: #{node.name}, content: #{node.content}"} 

Когда я запускаю его я получаю следующее сообщение об ошибке:

test.rb:5:in `<main>': undefined method `each_leaf' for #<Tree::TreeNode:0x007fc2a905e560> (NoMethodError) 

, но когда я запускаю код с each_leaf заменен each он отлично работает (я, конечно, получить информацию для узлы 1 и 2, тогда как если он работал each_leaf, я должен получить только информацию для узла 2).

Просмотрев документацию для TreeNode Я заметил, что все методы, которые не работают для меня, перечислены рядом с Tree::TreeNode+, а не Tree::TreeNode. Я не смог понять, что это значит. Нужно ли мне что-то делать или устанавливать какой-либо другой камень, чтобы получить эти методы? Спасибо за любую помощь!

+0

Я задаюсь вопросом, является ли драгоценный камень 'tree' драгоценным камнем, который вы ищете. Метод существует, когда я смотрю на источник на github и существует там годами. Я не могу понять, что означает '+' на rubydoc.info. –

ответ

1

Это потому, что версия драгоценного камня на rubygems.org отстает от последней версии github (из которой создается документация). Вы можете установить версию GitHub с помощью:

gem install specific_install 
gem specific_install -l https://github.com/evolve75/RubyTree.git 

или просто добавить его в Gemfile:

gem 'tree', github: 'evolve75/RubyTree' 

Update: похоже, он имеет самую последнюю версию на RubyGems, но он переименован в rubytree , следовательно

gem uninstall tree 
gem install rubytree 

но require 'tree' как и раньше.

+0

Спасибо! Это сработало отлично. – lwassink

Смежные вопросы