我有一个模块Top
,它有模块A
和B
。在他们每个人中,我想要使用模块C
的类方法。为此,我必须为每个模块A
和B
包含C
。是否可以在Top
中包含C
以便其所有子模块都可以访问其类方法?如何自动将模块包含在嵌套子模块中
例子:
# I'll extend module C in example to make it shorter
module C
def foo; puts 'Foo!' end
end
module Top
extend C
module A end
module B end
end
# That's how it works now
Top.foo
#=> "Foo!"
Top::A.foo
#=> NoMethodError: undefined method `foo' for Top::A:Module
Top::B.foo
#=> NoMethodError: undefined method `foo' for Top::B:Module
# That's how I want it to work
Top.foo
#=> "Foo!"
Top::A.foo
#=> "Foo!"
Top::B.foo
#=> "Foo!"
显示结构,这个问题会更容易理解。 –
您可以从'Z'继承'A'和'B',并将'C'包含到'Z'。 –