3
Kernel#autoload
과 Module#autoload
의 차이점은 무엇입니까? 각각의 맥락은 무엇입니까?루비 커널 # 자동로드 및 모듈 # 자동로드 차이
Kernel#autoload
과 Module#autoload
의 차이점은 무엇입니까? 각각의 맥락은 무엇입니까?루비 커널 # 자동로드 및 모듈 # 자동로드 차이
표준 문서에서 이러한 방법의 소스 코드에서 볼 수 있듯이 Kernel#autoload
은 수신기를 클래스에 캐스팅 한 후에 Module#autoload
으로 호출합니다.
하나는 가장 일반적인 접근 방식을 사용하고 클래스 수준에 autoload
호출
class C
autoload(:M, 'm')
end
Module#autoload
은 Class < Module
때문이라고합니다. 리시버가 이미이 경우에 Class
'인스턴스이므로 명시 적 형변환이 필요하지 않습니다.
, 하나는 메서드 본문 내에서 autoload
를 호출 할 필요가 있습니다 수신기가 인스턴스가 후자의 경우
class C
def c
autoload(:M, 'm')
end
end
을하고는 Module
자손 않는 한, Kernel#autoload
가 호출되는, 차례로이 인스턴스의 클래스를 가져 와서 호출을 Module#autoload
에 전달합니다.