我已经在模块A中定义了一个方法。我想从模块B中调用相同的方法
module A
included do
def self.some_func
end
end
end
module B
some_func # It raise error (NoMethodError: undefined method). How solve this?
end
module C
include A
include B
end
这不起作用。是否可以调用由另一个模块中的一个模块定义的功能?
答案 0 :(得分:2)
除非module A
顶部也有ArgumentError
,否则应该extends ActiveSupport::Concern
提出。如果没有ActiveSupport::Concern
,您将在此处调用Module#included
实例方法:
included do
...
end
但这需要一个参数。
如果你这样说:
module A
extend ActiveSupport::Concern
included do
def self.some_func
end
end
end
然后,您将获得要使用的included
和期望的module A
。
此外,module B
并非include A
,因此它无处可得some_func
,
module B
some_func
end
会给您NoMethodError
。如果包含A
:
module B
include A
some_func
end
然后它将起作用。