包含模块的工作原理如何?

时间:2013-03-24 23:33:21

标签: ruby

module A
end 

class Klass
  include A
end

这如何影响Klass?它只是简单地将Klass放入模块A还是做更多的事情?

3 个答案:

答案 0 :(得分:1)

  

include方法从另一个模块获取所有方法   将它们包含在当前模块中。这是语言层面的事情   而不是像require那样的文件级事物。包含方法   是与其他模块“扩展”类的主要方法(通常是   被称为混合)。例如,如果您的类定义了该方法   “each”,你可以包含mixin模块Enumerable,它可以充当   一个集合。这可能会令人困惑,因为非常使用包含动词   与其他语言不同。

从这里开始:What is the difference between include and require in Ruby?

另请参阅此页面:http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html它有关于如何包含作品的详细解释。

答案 1 :(得分:1)

简答:如果您的模块中有一些方法,并且在类中使用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

答案 2 :(得分:1)

include是将模块的方法包含在另一个模块或类中的方法之一。

请阅读my article,了解它如何影响Ruby /

中的方法调用