-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