module A
end
class Klass
include A
end
这包括如何影响 Klass?它是简单地将 Klass 放入模块 A 中还是做更多的事情?
简短的回答:如果你的模块中有一些方法并且你include
在一个类中使用,那么这些方法可以在类中使用。
Module A
def shout
puts "HEY THERE!!!!"
end
end
class Klass
include A
end
# Create instance of Klass
instance = Klass.new
# Produces "HEY THERE!!!!"
instance.shout
include
是将模块的方法包含在另一个模块或类中的方法之一。
请阅读我关于它如何影响 Ruby 中的方法调用的文章/
include 方法从另一个模块中获取所有方法,并将它们包含到当前模块中。这是一个语言级别的东西,而不是文件级别的东西,就像 require 一样。include 方法是使用其他模块“扩展”类的主要方法(通常称为 mix-ins)。例如,如果你的类定义了方法“each”,你可以包含 mixin 模块 Enumerable 并且它可以作为一个集合。这可能会令人困惑,因为包含动词在其他语言中的使用方式非常不同。
从这里:Ruby中的include和require有什么区别?
也看看这个页面:http ://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html它有一个关于包含如何工作的详细解释。