Seeing metaclass clearly and metaid.rb

Tags:

Seeing metaclass clearly.

class Object

def metaclass; class << self; self; end; end def meta_eval(&blk); metaclass.instance_eval(&blk); end def meta_def(name, &blk) # 클래스 메소드 정의 meta_eval { define_method(name, &blk) } end def class_def(name, &blk) # 인스턴스 메소드 정의 class_eval { define_method(name, &blk) } end end [/code] 참고로, [code lang="ruby"] class C class << self # this is C.instance_eval { self } end # this is C.class_eval { self } end [/code] 위에서 왜 meta_def와 같이 class << self; self; end 와 같은 기법을 쓰는가. 음, 그건 임의의 클래스에 대해서 적용해야하는데, 클래스명을 모르면 C.instance_eval 과 같은 호출은 못하니까일듯.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *