引入MyModule时出现“Uninitialized constant A::MyModule”错误求助
解决Ruby中include模块时的“Uninitialized constant”错误
出现这个错误的核心原因是:你的a.rb文件没有加载定义MyModule的my_module.rb,Ruby解释器根本不知道这个模块的存在,自然会报常量未初始化的错误。
修复方案
在a.rb的最开头添加文件加载语句,确保Ruby能找到并加载my_module.rb:
修改后的a.rb代码:
require_relative 'my_module' class A include MyModule puts ARRAY end
说明
require_relative是Ruby中加载相对路径文件的常用方法,适合加载同目录或子目录下的文件。如果两个文件不在同一目录,只需调整路径参数,比如require_relative '../lib/my_module'。- 加载完模块文件后,
include MyModule就能正常引入模块,模块中定义的ARRAY常量也会被引入到类A的命名空间中,puts ARRAY就能正常输出[1,2,3]。
内容的提问来源于stack exchange,提问作者b d
相关产品推荐
相关产品推荐

