-1

我正在尝试使用由该类扩展的类扩展的方法。我正在尝试做的一个例子:

class A
  def foo
    "Foobar"
  end
end

class B
  extend A
end

class C
  extend B
end

B.foo #=> "Foobar"
C.foo #=> "Foobar"

我不确定这种类型的功能在 Ruby 中是否可用。我知道这可以通过更改extendincludein来实现B,但我希望在 in 和 in 中作为类方法可用的A方法。BC

4

2 回答 2

1

extend并且include用于模块;据我所知,您不能将模块与extendand一起使用include(实际上 Ruby 会引发错误)。相反,您应该将 A 定义为一个模块,然后将extendB 和 C 与 A 一起定义。请参阅John Nunemaker的RailsTips 文章以更好地处理此设计模式。extendinclude

另一种选择是让 B 和 C 从 A 继承,如下所示:

class A
  def self.foo
    "Foobar"
  end
end
class B < A; end
class C < B; end
于 2013-03-04T02:31:20.933 回答
1
class A
  def self.foo
    "Foobar"
  end
end

class B < A
end

class C < B
end
于 2013-03-04T02:31:49.140 回答