此代码似乎不起作用 - 它无法弄清楚some_func是否已定义。为什么不呢?
# in file 1
def ModuleA
def some_func
"boo"
end
end
# in file 2
def ModuleB
include ModuleA
MY_CONSTANT = some_func
end
答案 0 :(得分:1)
您声明模块错误,需要extend
而不是include
module ModuleA
def some_func
"boo"
end
end
module ModuleB
extend ModuleA
MY_CONSTANT = some_func
end
答案 1 :(得分:1)
在您的代码示例中,您使用include
指令。
这意味着ModuleA
中定义的所有方法都作为实例方法包含在ModuleB
中。
但是,通过在some_func
的模块主体中调用ModuleB
,您尝试调用它,就像在{{1}上将其定义为类方法一样(不是,因为你之前使用过ModuleB
)。
如果您确实想要将其定义(并调用)为类方法,则需要在include
内使用extend ModuleA
来添加方法定义。