4
def metaclass; class << self; self; end; end
有人可以爲我解密這一行。我想它被擠進一個事實也沒有多大幫助。但是在兩天前開始看紅寶石,我擔心我可能會錯誤地將它分開。這個'元類'方法是做什麼的?
def metaclass; class << self; self; end; end
有人可以爲我解密這一行。我想它被擠進一個事實也沒有多大幫助。但是在兩天前開始看紅寶石,我擔心我可能會錯誤地將它分開。這個'元類'方法是做什麼的?
打破它拆開:
def metaclass
class << self
self
end
end
注意,這是可作爲紅寶石1.9.2(Object#singleton_class
)一個內置的方法。
這樣做是通過class << self
打開並返回它(self
)來返回對象的singleton_class/metaclass/eigenclass。如果你感到困惑元類本身,我建議下面的文章:
這是奇怪的是分號沒有方法名'metaclass'在有機磷農藥後,原來需要。 – sawa 2011-04-29 14:22:38
@sawa你是什麼意思? 'irb> def metaclass class << self;自;結束; end#=> SyntaxError:(irb):1:語法錯誤,意外的keyword_class,期待';'或'\ n'' – Phrogz 2011-04-29 15:21:02
@Progrog這就是我的意思。問題就是這樣,在你評論前7分鐘編輯。 – sawa 2011-04-29 15:25:40