蝙蝠,这感觉就像一个愚蠢的问题......但我觉得我在这里错过了一些东西
如何在属于模块的类中自动继承模块方法?
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
否则将课程放入模块的重点是什么?
答案 0 :(得分:1)
我不太清楚你想要做到的是什么。就我而言,Ruby中的Modules
被用作命名空间和mixins。
您如何期望模块中的所有类都包含之前定义的模块函数?对我来说,这没有意义。也许,你正试图强迫那些不是Ruby特色的行为。
通常情况下,你将遵守语言约束,创建一个模块,在其中包含一些共同目标的函数,以及稍后在类中include
来扩展其行为 - 另一种方法来规避缺乏多重继承。
我没有看到你想要完成的事情的美丽。正如我所说,模块被用作命名空间,而mixin除此之外,并不是Ruby社区为他们所用的。
关于将类放入模块的问题,我想其他的就是模块化和面向对象的编程实践。