我們首先假設我想要一個允許 對象轉換成另一個對象的方法。其中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'已經。 –