如何在Ruby中继承类中的模块方法?

时间:2013-11-07 20:33:50

标签: ruby module

蝙蝠,这感觉就像一个愚蠢的问题......但我觉得我在这里错过了一些东西

如何在属于模块的类中自动继承模块方法?

module MyModule

  def hello
    puts "hello"
  end

  class Foo; end
  class Bar; end
end

HALP

f = MyModule::Foo.new
f.hello
# NoMethodError: undefined method `hello' for #<MyModule::Foo:0x007f8d8b010200>

b = MyModule::Bar.new
b.hello
# NoMethodError: undefined method `hello' for #<MyModule::Bar:0x007f8d8b03a140>

我觉得我不应该这样做

module MyModule
  class Foo
    include MyModule
  end
end

否则将课程放入模块的重点是什么?

1 个答案:

答案 0 :(得分:1)

我不太清楚你想要做到的是什么。就我而言,Ruby中的Modules被用作命名空间和mixins。

您如何期望模块中的所有类都包含之前定义的模块函数?对我来说,这没有意义。也许,你正试图强迫那些不是Ruby特色的行为。

通常情况下,你将遵守语言约束,创建一个模块,在其中包含一些共同目标的函数,以及稍后在类中include来扩展其行为 - 另一种方法来规避缺乏多重继承。

我没有看到你想要完成的事情的美丽。正如我所说,模块被用作命名空间,而mixin除此之外,并不是Ruby社区为他们所用的。

关于将类放入模块的问题,我想其他的就是模块化和面向对象的编程实践。