2013-07-03 5 views
3

는 다음의 예를 감안할 때 :Ruby에서 다른 모듈의 모듈에 정의 된 메소드에 액세스하는 방법은 무엇입니까?

module A 
    module B 
    def whoa 
     puts 'Whoa!' 
    end 
    end 
end 
나는 방법에 액세스 할 수있는 방법을

?

1.9.3p392 :047 > A.B.whoa 
NoMethodError: undefined method `B' for A:Module 

1.9.3p392 :048 > A::B.whoa 
NoMethodError: undefined method `whoa' for A::B:Module 

1.9.3p392 :049 > A::B::whoa 
NoMethodError: undefined method `whoa' for A::B:Module 

이러한 접근 방식 중 아무 것도 작동하지 않는 것 같습니다.

답변

7

,의 인스턴스 해당 클래스의 객체 및 호출 whoa :

class C 
    include A::B 
end 

c = C.new 
c.whoa 
# Whoa! 
5

메소드를 인스턴스 메소드로 정의했습니다. 당신이 인스턴스없이이 방법을 사용하려면,이 모듈의 클래스 메소드이어야한다 : 당신은 또한 클래스에 모듈을 포함 할 수 있습니다, 당신은 클래스 수준의 방법을 원하지 않는 가정

module A 
    module B 
    def self.whoa 
     puts 'Whoa!' 
    end 
    end 
end 

1.9.3p327 :009 > A::B.whoa 
Whoa! 
=> nil 
관련 문제