Re: [問題] 刪除new出來的instance(from class)

看板Ruby作者 (godfat 真常)時間18年前 (2007/02/09 22:03), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《skyboy (yes i do...)》之銘言: : well, 這邊有幾個問題再提出來討論一下 : 我試過用reference指到new出來的那個instance : 如果把reference設為nil : 其實好像沒辦法把那個instance也改成nil : 試過了一下, 如果是以reference這種類似C++裡指標的方法 : 好像對同樣的instance做一次copy : 他是同樣跟C++指標一樣 內容(值)改變, 也會反應出來 : 但是如果把instance變成nil, 其實在他的reference還是保留著東西 並不會變成nil yes, C++ 的 reference 是特別的,也許現在更好的說法叫做 alias, 以避免和 Java 所聲稱的 reference 搞混,兩者概念完全不同。 我個人認為,像是 Java/Ruby 所做到的,應該叫做 pointer 才對, 不過我想完全沒在碰 C++ 的人,用 reference 稱呼也許也夠了。 總而言之,我之前有看過有人在討論如何做到像你所說的 alias,(C++'s reference) 也就是對「變數一」操作,同樣會改變「變數二」的所有狀態, 亦即,「變數一」和「變數二」是一體兩個名字。 不過我忘記他們怎麼說的了 Orz 換一種概念的話,也可以用變數的變數來形容 試著做做看: class Qoo def cool puts 'cool ~~~~' end end qoo = Qoo.new x = Variable.new qoo y = x x.data # Qoo y.data # Qoo x.cool # 'cool ~~~~' y.cool # 'cool ~~~~' x.data = nil x.nil? # true y.nil? # true -- Hear me exalted spirits. Hear me, be you gods or devils, ye who hold dominion here: I am a wizard without a home. I am a wonderer seeking refuge. Sacrifice -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18

02/10 02:44, , 1F
? 疑 x = Variable.new qoo 這段是可run的??
02/10 02:44, 1F

02/10 13:52, , 2F
不行,當練習自己寫 class Variable 吧 :p
02/10 13:52, 2F
文章代碼(AID): #15p7yb67 (Ruby)
文章代碼(AID): #15p7yb67 (Ruby)