繁体   English   中英

什么时候需要Ruby中的模块?

[英]When do you have to require a module in Ruby?

说你有

module MyFirstModule
  def say_hello
    puts "Hello"
  end
end

class ModuleTester
  include MyFirstModule
end

在类定义之上是否需要一个require MyFirstModule语句? 你有没有需要这个模块? 什么时候,为什么?

你永远require模块,你require文件。

在上面的示例中,如果您发布的两个片段位于不同的文件中,例如my_first_module.rbmodule_tester.rb ,那么您将不得不这样做

require "my_first_module"

在你可以引用MyFirstModule之前。

(显然,如果他们是在同一个文件,没有require声明将是必要的,而且是没有意义反正就没有文件require 。)

require做的是在库路径中查找给定的Ruby文件,然后加载Ruby文件,就像执行它一样。 在程序运行期间,该文件最多将被加载一次(这与load命令的区别在于,这与require非常相似)。

在上面的示例中,在使用MyFirstModule之前,您必须require定义它的文件。

请注意,有一个自动加载机制,可以自动为您require文件。 此外,Rails确实require大多数类自动。 因此,不要混淆在某些情况下似乎没有必要使用require语句。

你不需要。 'Include'会根据您的需要将方法say_hello暴露给您的班级。 'Require'用于从另一个文件中提取所有代码。 因此,如果您在另一个文件中定义了MyFirstModule,则需要该文件,以便您可以在该类中包含该模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM