2013-08-31 1 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 -using-require-inside-a-module-of-the-top) 대신 – knut

답변

3

을 할 수 말할 수 있습니다. require 어디서든 사용할 수 있으며, FileUtils은 수업 내/외부에서 사용할 수 있습니다.

내가 github에서 본 것으로서, 그것은 정상에있다 - 다른 언어의 대부분처럼.

+0

클래스 내에서 필요하면 클래스를 필요로하는지 생각해 보았습니다. 인스턴스화 할 때 불필요하게 실행되거나 호출 될 것입니까? 불필요한 오버 헤드 –

+0

@GeorgeAnandaEman 클래스 본문에 있으면 한 번만 호출되지만 메서드 호출 인 경우 해당 메서드를 호출 할 때마다 호출됩니다. – fotanus

5

fotanus의 답변을 보완합니다. 별도의 파일에 정의 된 내용은 load 또는 require 인 경우 main 네임 스페이스에 있습니다. 범위 나 네임 스페이스의 측면에서 차이를 만들지 않습니다. 또한 로컬 변수는 파일에서 참조 할 수 없습니다.

따라서 선택 가능성은 유지 관리 가능성에 달려 있습니다. 파일의 맨 위에 종속성을 작성하면 종속성을 한눈에 알기가 쉽습니다. 다른 한편, 특정 모듈 내에서 필요한 경우 해당 종속성이 특정 모듈에만 적용된다는 것을 명확하게 나타낼 수 있습니다. 옛날에는 전 (前者)이 선호되었지만 요즘 사람들이 bundler 보석을 사용하는 곳에서는 모든 의존성을 한 눈에 볼 수있는 수단이 있기 때문에 이전에 대한 동기가 감소했을 수 있습니다.