赞 | 0 |
VIP | 186 |
好人卡 | 0 |
积分 | 1 |
经验 | 5829 |
最后登录 | 2012-12-21 |
在线时间 | 83 小时 |
Lv1.梦旅人 龙皇
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 83 小时
- 注册时间
- 2007-8-8
- 帖子
- 2956
|
8楼
楼主 |
发表于 2009-5-29 08:30:31
|
只看该作者
以下引用杨飞云于2009-5-28 23:41:41的发言:
不过如果要克隆自己设计的类的对象,比如一个 Window 的子类包含了另外一个 Window 对象,需要去重载 clone 来实现深层次的克隆,也就是递归调用各个实例成员对象的 clone 方法,否则的话仅仅是拷贝了这个 Window 类对象本身,而没有拷贝它的成员变量的对象~
也就是说只能做到表层复制??
a = [[1,1],[2,2],[3,3]]
b = a.clone
a[0].push 9
p a #=> [[1,1,9],[2,2],[3,3]]
# b的元素也会被影响??
p b #=> [[1,1,9],[2,2],[3,3]]
另问:
我刚刚在书上发现dup
而dup与clone近乎有相同功能
不同的是
dup只会复制内容,
而clone会连同特殊方法、污染旗标(taint?)、冻结资讯(frozen?)一并复制
何谓
污染旗标(taint?)
冻结资讯(frozen?)
而特殊方法又是因为什么才叫特殊方法?? |
|