-2
在完成元編程Ruby中的「對象模型」一章後,我感到困惑。 對象(某個類的實例)的方法與Ruby中它的類的實例方法是否相同? 聽起來不錯。因爲我們知道存儲在其類中的對象的方法。是一個對象(某個類的實例)的方法與Ruby中它的類的實例方法相同嗎?
class W;end
W.methods == Class.instance_methods # => true
# Also
String.instance_methods == "abc".methods # => true
W
是Class
一個實例。但如果我重新打開W
併爲它定義一個新的方法,比混淆。
class W
def self.foo
"bar"
end
end
W.methods == Class.instance_methods # => false
W
是Class
一個實例,並W
的方法是Class
的實例方法。但是如果:foo
未存儲在Class
中,那麼它比存儲在哪裏?
-1。這是錯誤的。 'wtf'不存儲在'W'類中,它存儲在'W'類對象的單例類中。 –
我想我誤解了對象和類,現在我得到這個,'W'是_Class_的對象,'Class'也是_Class_的對象。他們是不同的對象。他們有相同的方法,因爲他們是_Class_的對象,如果我向W添加一個方法,它會像@JörgWMittag所說的那樣添加到W類對象的單例類。而這種類型的方法是單例方法。我剛剛發現,在ruby中我們可以定義一個像'def obj.method; end'這樣的方法。 – DouO