Re: [問題] 刪除new出來的instance(from class)
※ 引述《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
02/10 02:44, 1F
推
02/10 13:52, , 2F
02/10 13:52, 2F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章