我正在尝试使用由此类扩展的类扩展的方法。我正在尝试做的一个例子:
class A
def foo
"Foobar"
end
end
class B
extend A
end
class C
extend B
end
B.foo #=> "Foobar"
C.foo #=> "Foobar"
我不确定Ruby中是否提供此类功能。我知道可以通过将extend
更改为include
中的B
来实现这一点,但我希望A
中可用的方法作为B
中的类方法以及C
。
答案 0 :(得分:1)
extend
和include
用于模块;据我所知,你不能使用extend
和include
的模块(实际上Ruby会引发错误)。相反,您应该将A定义为模块,然后将extend
B和C定义为A.请参阅extend
和include
上的John Nunemaker's RailsTips write-up以更好地处理此设计模式。< / p>
另一个选择是让B和C继承自A,如下所示:
class A
def self.foo
"Foobar"
end
end
class B < A; end
class C < B; end
答案 1 :(得分:1)
class A
def self.foo
"Foobar"
end
end
class B < A
end
class C < B
end