2016-06-16 45 views
0

我们首先假设我想要一个允许 对象转换成另一个对象的方法。其中B是一个目的从方法内部改变自我类?

(在B型) - >

def change_type 
    self = self.becomes (A) 
end 

但无论如何,我不能改变不了 “自我”。我该如何解决它?演员必须在模特中。

+1

这是不可能的。 – mudasobwa

+2

这种臭OOP味道给我。你为什么需要这样做? 'B'__is__一个'A'已经。 –

回答

0

没有办法。你不能覆盖self。或者事实上,任何对象*


*您可以重新分配引用/变量,但不能重新分配对象本身。

0

您不能在创建对象时更改类,也不能将对象更改为另一个对象。

你在考虑Smalltalk's become: method,它可以使一个对象成为另一个对象(因此作为特殊情况也可以改变对象的类)。 Ruby没有。

0

如果类B继承了类A,那么B的实例就诞生了A的实例。无需更改。

class A; end 

class B < A; end 

b = B.new 

b.is_a?(A) #=> true