在模块定义之外放置Ruby`require`?

时间:2014-01-22 19:10:21

标签: ruby

在Ruby中,可以在模块定义之外放置require语句吗? require< d'd模块是否仍然可以在嵌套在模块中的类中使用?

例如,是这样的:

require 'baz'
module Foo
  class Bar
    # some code using Baz
  end
end 

与此相同?

module Foo
  require 'baz'
  class Bar
    # some code using Baz
  end
end 

与此相同?

module Foo
  class Bar
    require 'baz'
    # some code using Baz
  end
end 

2 个答案:

答案 0 :(得分:6)

您可以将require放在任何地方。正如您在文档here中看到的那样,所需文件中的常量和全局变量始终添加到全局命名空间中。最佳做法通常是在任何嵌套之外使用require,但是一些gem可以利用它可以在任何地方有条件地需要基于ruby逻辑的文件,即

if some_boolean
  require 'file'
end

答案 1 :(得分:2)

require只需运行文件中的代码即可。你把它放在哪里完全无关紧要。这取决于文件中的代码,会发生什么,而不是调用require的位置。