2015-03-02 61 views
1

我在板上有一個類的塊。我希望能夠刪除Piece的一個實例,以便程序中指向該部分的任何其他內容都指向零。通過該類的方法刪除類的實例

這裏是我想要做的很基本的代碼版本:

piece = Piece.new 
variable = piece 
variable #=> <Piece:0x0000000xxxxxxxx> 
piece.delete 
variable #=> nil 

這似乎是一個非常基本的任務,所以我覺得我失去了一些東西明顯。我試着用「self = nil」爲類創建一個刪除方法,但是這會返回一個錯誤(「不能改變自己的值」)。

到目前爲止,我剛剛通過更新其他指向我的'delete'方法中的對象的東西來解決此問題,但似乎應該有更好的方法。

+0

顯示你的Piece類別也請 – 2015-03-02 07:20:34

+0

那麼這個班級是150線長和醜的王,所以我不認爲這將是非常可取的後整個事情。我認爲刪除一個類的實例是一個非常普遍的問題,並且該類的內容不會非常相關,但如果我對可能相關的內容有所瞭解,我可以發佈一些內容。 – collinksmith 2015-03-02 07:34:14

+2

沒有必要發佈課程。這是關於是否能夠從對象內部改變自我,並在單點上移除對象的所有引用。 – limekin 2015-03-02 07:37:45

回答

3

這是不可能的。首先,Ruby是一種面向對象的語言,它意味着所有的操作都是通過消息傳遞給對象完成的,所有被操縱的對象都是對象。變量不是對象,因此您無法操作它們。 (你可以用變量做的唯一的事情是一個值分配給他們,並取消引用它們。)

即使如果你可以操縱的變量,你仍然需要追捕的問題,每一個參照對象,刪除它,以便該對象有資格進行「刪除」(即垃圾收集)。

+0

嗯。我試圖通過刪除它來操縱對象。對我而言,如果你能以某種方式說出「這個對象不再存在」,那麼似乎是有道理的。然後,任何曾經指向它的變量都不會指向任何東西。沒有涉及變量的操縱。但如果這是不可能的,那回答我的問題。那謝謝啦。 :) – collinksmith 2015-03-02 08:15:29