【问题标题】:Methods from Tree::TreeNode not workingTree::TreeNode 中的方法不起作用
【发布时间】:2016-05-24 20:06:47
【问题描述】:

我有一个关于红宝石的问题。我正在用 ruby​​ 编写一些代码,我想使用一棵树。我决定使用Tree::TreeNode 类。有关文档,请参阅此处http://www.rubydoc.info/github/evolve75/RubyTree/Tree/TreeNode

这是我第一次使用宝石。我在终端中运行 sudo gem install tree 并将 require 'tree' 添加到我的 ruby​​ 文件的开头。在大多数情况下,它都有效。我可以初始化节点并且大多数方法都有效。但是,#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 旁边。我一直无法弄清楚这意味着什么。我是否必须做一些额外的事情或安装其他一些 gem 才能获得这些方法?感谢您的帮助!

【问题讨论】:

  • 我想知道tree gem 是否是您正在寻找的 gem。当我查看 github 上的源代码并且已经存在多年时,该方法就在那里。我也不知道 ruby​​doc.info 上的 &lt;sup&gt;+&lt;/sup&gt; 是什么意思。

标签: ruby rubygems


【解决方案1】:

这是因为 ruby​​gems.org 上的 gem 版本落后于 github 上的最新版本(生成文档的地方)。您可以使用以下方式安装 github 版本:

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

或将其添加到您的 Gemfile:

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

更新:看起来它确实有 ruby​​gems 的最新版本,但它已重命名为 ruby​​tree,因此

gem uninstall tree
gem install rubytree

但是 require 'tree' 就像你以前一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2015-10-15
    • 2013-05-11
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多