코드입니다 후자는 클래스 메서드 일 뿐이지 만 두 메서드 중 하나를 호출 할 때는 M.greet를 사용해야합니다. 그렇습니까? 누군가가 하나의 코드를 다른 코드보다 더 많이 사용할 수 있는지에 대해 궁금해했습니다. 감사!루비 모듈 및 확장 상황의 어떤 종류에서 자기
13
A
답변
13
첫 번째 예는 일반적으로 그들의 존재를 모를 때 사람들이 (module_function
의 기능을 달성하는 방법입니다 이 방법).
module_function
은 모두 인스턴스 메소드 및 클래스 메소드입니다. 두 번째 코드 예제에서 메서드는 클래스 메서드입니다.
9
당신의 첫 번째 예제와 함께이 작업을 수행 할 수있을 것입니다,하지만 두 번째 :
include M
greet
2
모듈은 모듈 메서드를 작성하여 네임 스페이스로 사용할 수 있으며 모듈의 인스턴스 메서드를 다른 개체에 혼합 할 수 있습니다.
자체 확장 모듈 개념을 사용하면 모듈을 두 가지 방법으로 사용할 수 있습니다. 독립형 네임 스페이스 또는 믹스 인 중 하나입니다. 이 모듈을 고려해보십시오 :
module M
def bar
puts "bar"
end
end
class C
include M
end
이것은 인스턴스 메소드를 가지며 다른 객체와 혼합 될 수 있습니다. 우리가
puts M.class # => Module
이 방법을 보여 수, 모듈 클래스 Module
의 단지 목적은,
puts M::bar # => undefined method `bar' for M:Module
puts C.bar # => this is bar
그러나 : 그것은 모듈 방법이 없으며, 따라서 공간으로 사용할 수 없습니다 우리가 뭔가 미친 짓을 할 수 있다고. 메소드를 인스턴스와 모듈 메소드가되도록 모듈을 혼합 할 수 있습니다.
module M
extend self
def bar
puts "bar"
end
end
puts M::bar # => this is bar
puts C.bar # => this is bar
관련 문제
- 1. 루비 : 확장 자기
- 2. 메이븐의 pom.xml 모듈 + 자기
- 3. 제거 중복은 XML 문서의 어떤 종류에서
- 4. 하나의 디렉토리 아래에 여러 개의 루비 확장 모듈
- 5. 모듈 확장
- 6. 모듈 및 클래스의 요소에 액세스하는 루비 스타일
- 7. Rpam 루비 모듈 및 PAM 서비스 이름
- 8. 루비 모듈 포함 질문
- 9. 루비 모듈 방법 접근
- 10. 루비 모듈 최적화
- 11. 루비 중첩 클래스와 모듈
- 12. 나는 다음 루비 코드가 루비 모듈
- 13. 타사 Joomla 구성 요소 및 모듈 확장
- 14. 확장 가능한 루비 애플리케이션
- 15. 루비 클래스 확장
- 16. distutils가있는 Python 확장 모듈
- 17. 파이썬에서 모듈 포함/확장
- 18. 루비 믹스 : 확장 또는 포함?
- 19. 차별화 모듈 및 클래스
- 20. 루비 : 어떤 방법이 호출됩니까?
- 21. 루비 스크립트가 어떤 루비 버전을 실행하고 있습니까?
- 22. 인터럽트와 예외 상황의 차이점은 무엇입니까?
- 23. 왜 루비 세터가 "자기"를 필요로합니까? 수업 내 자격?
- 24. 유비쿼터스 컴퓨팅 및 자기 간섭
- 25. If-else 및 자기 질문
- 26. 파이썬과 루비 확장 모듈을 결합한
- 27. 루비 오브젝트 모델/클래스/모듈 .... 어디서든 다이어그램?
- 28. 파이썬 확장 : C 모듈 미리로드
- 29. 키 누름 및 키 릴리스 이벤트를 시뮬레이트하는 루비 모듈?
- 30. 다형성 has_many 자기 참조
오, 멋진 방법입니다. 그렇게하면 모든 기능을 제공하지 않으려는 경우에 대비하여 기능을 부여 할 메소드를 선택할 수 있습니다. 감사! – joeellis