2017-03-10 1 views
0
module Add 
def addition 
    sum=1+2 
    puts sum 
end 
a=Add.addition 

사람이 내가 놓친 게 왜 나는이 오류 - 추가에 대한>NoMethodError

정의되지 않은 메서드`또한 '얻고 무엇을 말해 줄 수 : 모듈 (NoMethodError) 당신이 원하는 경우

답변

1

클래스 메서드와 인스턴스 메서드를 혼동스럽게합니다. 귀하의 정의 : 당신이 모듈 Add의 방법이라고하는 반면

module Add 
    def addition 
    ... 
    end 
end 

Add의 인스턴스 메소드를 정의합니다. 클래스/모듈 메소드를 정의하려면 다음과 같이 정의해야합니다.

module Add 
    def self.addition 
    ... 
    end 
end 
0

을 , 직접 전화를 직접 접근 방법으로 정의 할 수 :

def self.addition 
    # ... 
end 

또는 당신은 항상이 사용 재 작업 할 수 있습니다

module Add 
    # ...(methods)... 

    extend self 
end 

그러면 모든 mixin 유형의 메소드가 자동으로 직접 액세스 할 수있는 것으로 승격됩니다.

당신은 또한이 같은 더 많은 선택적를 태그 할 수 있습니다

module Add 
    def addition 
    # ... 
    end 
    module_method :addition 
end 

을 방법은 Add.addition으로 또는 다른 모듈 또는 클래스 include Add를 호출하는 경우 중 다음 사용할 수 있음.