【发布时间】:2018-03-30 06:04:40
【问题描述】:
我正在尝试定义几个模块,以便轻松地将某些实例和类方法添加到其他类中,这就是我正在做的事情:
module Foo
module Bar
def speak
puts "hey there"
end
end
module Baz
extend Foo::Bar
def welcome
puts "welcome, this is an instance method"
end
end
end
class Talker
include Foo::Baz
end
Talker.new.welcome
Talker.speak
这个输出是:
welcome, this is an instance method
undefined method 'speak' for Talker.class (NoMethodError)
我期待 Talker 有 'speak' 方法,因为它包含 Foo::Baz 本身扩展 Foo::Bar。
我错过了什么?
【问题讨论】:
-
因此,如果我将 Baz 设为一个类而不是一个模块,并且我更改了 Talker 使其成为 Baz 的子类,那么我的示例就可以工作。但是有没有可能在不让 Baz 成为一个类的情况下做我想做的事情? (而且不必像 Talker::Foo::Bar.speak 那样做?)
标签: ruby