【发布时间】: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 才能获得这些方法?感谢您的帮助!
【问题讨论】:
-
我想知道
treegem 是否是您正在寻找的 gem。当我查看 github 上的源代码并且已经存在多年时,该方法就在那里。我也不知道 rubydoc.info 上的<sup>+</sup>是什么意思。