彼が「 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 クラスの特定のインスタンスに対して開いているのかを知りたいです。