2016-06-16 51 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