【发布时间】:2012-12-19 07:44:35
【问题描述】:
我有一个模块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!"
【问题讨论】:
-
显示代码结构,问题会更容易理解。
-
您可以让
A和B继承自Z,并将C包含到Z。
标签: ruby namespaces