让我们从假设我想要一个允许的方法开始 将自身转换为另一个对象的对象。其中B是A对象
(在B模型中) - >
def change_type
self = self.becomes (A)
end
但无论如何我无法改变“自我”。我该如何解决?演员必须在模特中。
答案 0 :(得分:1)
没有办法。您无法覆盖self
。或者任何对象 * ,事实上。
*您可以重新分配参考/变量,但不能重新分配对象本身。
答案 1 :(得分:1)
您不能在创建对象后更改对象的类,也不能将对象更改为其他对象。
您正在考虑Smalltalk's become:
method,它可以使一个对象成为另一个对象(因此作为特殊情况也会更改对象的类)。 Ruby没有这个。
答案 2 :(得分:0)
如果类B
继承了类A
,那么B
的实例就会生成A
的实例。无需改变。
class A; end
class B < A; end
b = B.new
b.is_a?(A) #=> true