我正在实现Huffman代码,需要在我的Huffman_Code.rb类中使用Huffman_Tree.rb类和Huffman_Tree_Node_values.rb类。我会简化,所以我不发布所有代码。我收到了这个错误:
Huffman_Code.rb:54:in `create_tree': uninitialized constant
HuffmanCode::HuffmanTree (NameError)
from Huffman_Code.rb:15:in `encode'
from Huffman_Code.rb:82:in `<main>'
以下是代码:
require_relative 'Huffman_Tree_Node_Values'
require_relative 'Huffman_Tree'
Class Huffman_Code
def create_tree
right_child = Huffman_Tree.new(right_child_data)
end
end
如果我不需要任何相关内容,这就是我得到的错误。它使用Huffman_Tree_Node_Values.rb,但不加载Huffman_Tree.rb类。我如何需要多个课程?
答案 0 :(得分:1)
问题似乎与您的require_relative语句无关。从文档: http://ruby-doc.org/core-2.1.2/Kernel.html
Ruby尝试加载名为string的库相对于require 文件的路径。如果无法确定文件的路径,则为LoadError 提高。如果加载文件,则返回true,否则返回false。
因此,如果您的文件未加载,则会出错。
您需要初始化Huffman_Code类,无论您从哪里调用它,都可以访问该定义。