는 그것은 예를 방법 대신 더 클래스 방법처럼,왜 alias_method가 인스턴스 메소드입니까?
class A
def say
puts 'say'
end
alias_method :talk, :say
end
alias_method이 모듈 클래스에 정의 된 개인 예를 방법이지만 위의 코드에서, alias_method의 일반적인 사용입니다 왜 위의 코드가 작동합니까?
는 그것은 예를 방법 대신 더 클래스 방법처럼,왜 alias_method가 인스턴스 메소드입니까?
class A
def say
puts 'say'
end
alias_method :talk, :say
end
alias_method이 모듈 클래스에 정의 된 개인 예를 방법이지만 위의 코드에서, alias_method의 일반적인 사용입니다 왜 위의 코드가 작동합니까?
정확히 알 수 있듯이 A
의 클래스 메소드이며 동시에 Class
클래스가 서브 클래스 인 Module
클래스의 인스턴스 메소드입니다. 클래스 메소드는 인스턴스 메소드에만 배타적이지 않습니다. 모든 클래스 메소드는 싱글 톤 클래스의 메소드가 아니면 Class
클래스의 인스턴스 메소드입니다.
위의 예에서, alias_method
은 Module
클래스에 정의됩니다. 따라서 A
은 Module
의 인스턴스이고 alias_method
에 대한 메서드 호출의 수신자 일 수 있습니다. 그러나이 방법은 비공개이므로 수신자는 암시해야합니다.
두 달 동안 stackoverflow를 사용하고 3 가지 질문을하고 답변을 수락하지 않았습니다. 지금까지 해답이 없다면 만족 스럽지만 답이 맞으면 받아들이십시오. – sawa