看板 Ruby 關於我們 聯絡資訊
※ 引述《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
skyboy:? 疑 x = Variable.new qoo 這段是可run的?? 02/10 02:44
godfat:不行,當練習自己寫 class Variable 吧 :p 02/10 13:52