2013-04-02 5 views
2

모듈에 정의 된 메소드가 module_functions, 클래스 메소드 (예 : 'def self.foo') 및 인스턴스 메소드 (예 : 'def foo')로 정의 될 때 범위가 정의되는 방식에 대해 자세히 알고 싶습니다.루비 모듈의 모듈 함수, 인스턴스 메소드 및 클래스 메소드의 차이점은 무엇입니까?

모듈을 다른 클래스에 포함하면 동작이 어떻게 변경됩니까?

인터넷에서 파고 들었으므로 좋은 설명을 찾을 수 없었습니다.

답변

3

모듈에 클래스 (또는보다 적절하게 모듈) 메소드가 정의되어 있고 모듈을 수신기로 호출합니다. 당신이 include YourModule 일 때 섞이지 않을 것입니다.

모듈 인스턴스 메서드는 include YourModule을 호출 할 때 호출자의 인스턴스 메서드로 혼합됩니다.

module_function 메서드는 모듈에서 정의한 인스턴스 메서드를 사용하여 private로 만들고 (혼합 할 때 비공개로 유지) 공용 모듈 메서드로 바꿉니다.

+0

몇 가지 예와 설명을 추가하면 답변을 더 쉽게 이해할 수 있습니다. –

관련 문제