我们首先假设我想要一个允许 对象转换成另一个对象的方法。其中B是一个目的从方法内部改变自我类?
(在B型) - >
def change_type
self = self.becomes (A)
end
但无论如何,我不能改变不了 “自我”。我该如何解决它?演员必须在模特中。
我们首先假设我想要一个允许 对象转换成另一个对象的方法。其中B是一个目的从方法内部改变自我类?
(在B型) - >
def change_type
self = self.becomes (A)
end
但无论如何,我不能改变不了 “自我”。我该如何解决它?演员必须在模特中。
没有办法。你不能覆盖self
。或者事实上,任何对象*。
*您可以重新分配引用/变量,但不能重新分配对象本身。
您不能在创建对象时更改类,也不能将对象更改为另一个对象。
你在考虑Smalltalk's become:
method,它可以使一个对象成为另一个对象(因此作为特殊情况也可以改变对象的类)。 Ruby没有。
如果类B
继承了类A
,那么B
的实例就诞生了A
的实例。无需更改。
class A; end
class B < A; end
b = B.new
b.is_a?(A) #=> true
这是不可能的。 – mudasobwa
这种臭OOP味道给我。你为什么需要这样做? 'B'__is__一个'A'已经。 –