2013-08-31 43 views
2

如果我想打一个类:在Ruby中,我是否需要在课堂或外部?

class Foo 
    #methods here 
end 

,需要让说FileUtils

require 'fileutils' 

class Foo 
    #methods here 
end 

class Foo 
    require 'fileutils' 
    #methods here 
end 
+0

[在模块中使用'require'有什么优势,而不是顶部?](http://stackoverflow.com/questions/18258838/what-are-the-advantages-of – knut

回答

3

它将工作无论哪种方式。 require可以在任何地方工作,并且FileUtils将在您的班级内外使用。

通过我在github上看到的,顺便说一下,它通常位于顶部 - 就像大多数其他语言一样。

+0

我在想如果我在类中需要它的时候,当我实例化它时,请求行是否会被不必要地执行或调用?导致不必要的开销 –

+0

@GeorgeAnandaEman如果它在你的类体中,它只会被调用一次,但如果是方法调用,每次调用该方法时都会调用它。 – fotanus

5

补充fotanus的答案。在单独文件中定义的任何东西都依赖于main命名空间,无论您是load还是require它。它在范围或名称空间方面没有区别。此外,本地变量不能在文件间引用。

所以你的选择应该取决于可维护性。如果你在文件的顶部写入依赖关系,一眼就可以很容易地知道依赖关系。另一方面,如果你在某个模块中需要,它可以清楚地表明这个依赖只针对特定的模块。在过去的日子里,我认为前者是首选,但现在,人们使用的是宝石,所以有办法一眼看到所有的依赖关系,所以前者的动机可能已经下降。

相关问题