在 Ruby 中,我发现为了命名空间而将类放在模块中是很有用的。我还看到可以将模块放入类中。但我不明白你为什么要那样做。
模块一般都是混入类的,对吧?那么,在类中定义模块的目的是什么?
最佳答案
我们可以在编写类似猿的代码时使用它:
class DrugDealer
module Drug
def happy?; true; end
end
def approach(victim)
victim.extend Drug
end
end
o = Object.new
DrugDealer.new.approach(o)
o.happy? # => true
另一个在现实世界中更实用的示例是拥有仅由子类应用的混合。
当事物的某些方面适用于某些子类而其他方面适用于其他子类时,这很有用,而这些方面的应用方式没有足够的顺序来为清晰的类层次结构让路(树)。想想多重继承!一个简化的例子:
class Person
def handshake
:sloppy
end
def mind_contents
:spam
end
module Proper
def handshake
:firm
end
end
module Clever
def mind_contents
:theories
end
end
end
class Professor < Person
include Proper
include Clever
# ...
end
等等。有点好,当明智地使用。甚至 super 调用和构造函数(虽然我没有在这里定义)也按照我希望的方式流经所有混合宏和类。
关于ruby - 为什么我们要把模块放在 Ruby 的类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3544111/