Mixin으로 사용할 모듈에서 인스턴스 변수를 초기화하는 방법이 있습니까? -이 약간 자극적입니다 내가 각 @member
이 제대로 각 기능에서 초기화 된 경우 또 다시 확인해야Mixins에서 인스턴스 변수 초기화
module Example
def on(...)
@handlers ||= {}
# do something with @handlers
end
def all(...)
@all_handlers ||= []
# do something with @all_handlers
end
def unhandled(...)
@unhandled ||= []
# do something with unhandled
end
def do_something(..)
@handlers ||= {}
@unhandled ||= []
@all_handlers ||= []
# potentially do something with any of the 3 above
end
end
주의 사항 : 예를 들어, 나는 다음 있습니다. 나는 많이 쓰고 싶다 :
module Example
def initialize
@handlers = {}
@unhandled = []
@all_handlers = []
end
# or
@handlers = {}
@unhandled = []
# ...
end
그리고 반복해서 물건을 올바르게 초기화 할 필요가 없다. 그러나, 내가 말할 수있는 것으로부터 이것은 불가능합니다. 이 문제를 해결하기 위해 initialize_me
메서드를 Example
에 추가하고 확장 클래스에서 initialize_me
을 호출하는 것 외에 어떤 방법이 있습니까? 나는 this example을 보았다. 그러나 이것을 수행하기 위해 Class
에 내가 원숭이 패치를하는 방법은 없다.
우수 감사합니다. 나는 그것에 대해 백만 건의 기사가 있지만 어디서나 언급 된 접근법을 왜 보지 못했는지 궁금합니다. –
불행하게도 이것은 작동하지 않는 것처럼 보입니다 -'@ example_ivar'를 참조하면'nil'으로 돌아옵니다. –
아, 고맙습니다. - 클래스가 이미'initialize' 메소드를 지정했다면, 이것은 문제를 일으킬 것입니다, 그렇죠? –