我试图理解他在“ A Block Costumecloaker
”中所写的_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 类的特定实例?