定义了两个对象,将第二个对象赋值给第一个对象后,第一个对象会消失吗?
以下是测试代码:
class Song
def initialize(name,artist,duration)
@name = name
@artist = artist
@duration = duration
end
def to_s
"Song: #@name --#@artist (#@duration)"
end
attr_accessor :name, :artist, :duration
end
song = Song.new("My way","BeiJing",180)
song1 = Song.new("I ok.","That is right.",280)
puts song.to_s
song = song1
puts song.to_s
song1.name = "I ok too."
puts song.to_s
结果,song.to_s显示结果是Song: I ok too. --That is right. (280)
我的问题是song和song1内容这时完全是一样的,为什么这样呢?原来song的对象消失了吗?
最新回复
不能这么写.
错在这里..
song = song1
这个的意思是song1的Object_id赋给song
Object_id我的理解是一个内存地址的指针.
应该用克隆才可以.
sonng = song.colon
[ 本帖最后由 karon_flame 于 2008-11-6 10:33 编辑 ]
但是我的问题是采用song = song1后,song原来指向的对象去哪了?是自动消失了吗?
如果仅仅是为了将song1的对象值赋给song的对象,可以采用song = song1.dup来操作,就不会出现上面的问题了。
对karon_flame回复中提到的colon方法,没找到相关的定义。
或许是吧
我有点忘记了...
不好意思