2
서브 클래스가 메소드 블록을 저장하여 나중에 실행되도록 클래스를 구현하려고했습니다. 그것은 작동하지만, 내가 잘못된 길을 택한 것 같습니다. 나는이 코드 조각하는 방법-없는 오류가있는 블록 결과에 child_method
에 대한 호출을 실행하려고하면블록 내에서 인스턴스 메소드 호출하기
class SuperKlass
def self.exec_later(&block)
@@block_for_later = block
end
def exec_now
return unless @@block_for_later
@@block_for_later.call
end
end
class ChildKlass < SuperKlass
exec_later do
child_method
end
def child_method
puts "Child method called"
end
end
test_klass = ChildKlass.new
test_klass.exec_now
: 이것 좀 보라. 누군가 내가 뭘 잘못하고 있는지 알고 있고, 이와 같은 기능을 추가하는 올바른 방법은 무엇입니까?
좋아,이 작품 : 나는 해결책을 발견했다. 나는 instance_eval에 대해 알고 있었지만 앰퍼샌드가있는 블록을 실행하는 데 사용할 수 있는지는 몰랐습니다. 답장을 보내 주셔서 감사합니다. – dhoelzgen
나는 지금 메타 프로그래밍을 배우고 있기 때문에 당신을 도울 수있어서 기쁘다. 그리고 나는 새로운 지식을 성공과 함께 사용할 수있다. :) 앰퍼샌드의 사용에 관해서, 나는 많은 메소드/proc 호출 세부 사항을 배웠다. [http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#The_ampersand_.28.26.29]. 나는 그것이 당신에게도 유용 할 수 있기를 바랍니다. –
이 링크는 정말 도움이됩니다. 다시 감사드립니다. :) 블록 (링크)에 대한 인수를 전달하는 데 도움이 될만한 다른 링크 [여기] (http://www.ruby-forum.com/topic/54096#32642)를 발견했습니다. 이 방법이라고합니다. – dhoelzgen