我试图理解他在“ 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 类的特定实例?