2014-01-22 18 views
4

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

例如,是这样的:

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 
+0

是的,可以放在室外。 –

+0

@DaveNewton最佳做法是什么? –

+2

@ArupRakshit我几乎完全看到文件顶部的'require's。我认为这是直接查看所有依赖项的好方法。 –

回答

6

你可以把require任何地方。正如您在文档here中看到的那样,来自所需文件的常量和全局变量总是添加到全局名称空间中。最佳做法通常是使用需要任何嵌套的外面,但一些宝石采取的事实,即它可在任何地方有条件地需要基于Ruby的逻辑文件的优势,即

if some_boolean 
    require 'file' 
end 
2

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

相关问题