彼が「 A Block Costume」cloakerで書いた_why の方法を理解しようとしています。
class HTML
def cloaker &blk
(class << self; self; end).class_eval do
# ... rest of method
end
end
end
私はそれclass << self; self; endが の Eigenclass を開くことを理解していますがself、これまでインスタンスメソッド内でこれを行う人を見たことがありません。selfこれを行うポイントは何ですか?selfメソッドが呼び出された受信者である必要があるという印象を受けましたcloakerが、内部から呼び出されますmethod_missing:
def method_missing tag, text = nil, &blk
# ...
if blk
cloaker(&blk).bind(self).call
end
# ...
end
では、通話selfの中身は何ですか? method_missingそして、私たちが呼び出すときは何selfですか:
((class << self; self; end).class_eval)
メソッド内cloaker?
基本的に、HTML クラスの Eignenclass を開いているのか、それとも HTML クラスの特定のインスタンスに対して開いているのかを知りたいです。