전역 컨텍스트 (주)에서 모듈을 포함 할 때 전역 컨텍스트에서 해당 메서드를 직접 사용할 수 있습니다. 클래스에서 모듈을 포함하면 include에서 호출 된 동일한 컨텍스트에서 호출 할 수없는 인스턴스 메서드를 정의합니다. 왜 이런거야?"포함"이 클래스와는 다른 글로벌 컨텍스트에서 다르게 동작하는 이유는 무엇입니까?
예 : 주요
에서
module Foo
def hello
puts "Hello, world!"
end
end
# In a class:
class Bar
include Foo
hello # Hello is an instance method so it won't work here.
end
# In main
include Foo
hello # Works fine. Why?
"최상위 레벨에서 'Object' 클래스의 인스턴스 인 최상위 레벨 객체'main'에서 인스턴스 메소드'# hello'를 호출하기 때문에. 기다려주십시오. 'main'이'Object' 클래스의 인스턴스라면,'Object.new.send (: instance_eval)에 Foo가 포함될 때 최상위 레벨에서'include'가 어떻게 작동할까요? 끝 '하지 않습니까? (그것은'include'에'NoMethodError'를 던집니다.) – Ajedi32
@ Ajedi32라는 간단한 개념을 가지고 엉망이되고 있습니다. –
요점은'include'가'Object' :'Object.new. 응답? : # => 거짓을 포함하십시오. 그렇다면 '메인'에 정의 된 이유는 무엇입니까? – Ajedi32