作者godfat (godfat 真常)
看板Ruby
标题Re: [问题] 删除new出来的instance(from class)
时间Fri Feb 9 22:03:13 2007
※ 引述《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
1F:推 skyboy:? 疑 x = Variable.new qoo 这段是可run的?? 02/10 02:44
2F:推 godfat:不行,当练习自己写 class Variable 吧 :p 02/10 13:52