1

我正在努力理解自己的语言。

我的疑问是,无论是自我语言的深克隆还是浅克隆。即,无论克隆只是克隆对象插槽还是插槽内的对象都被克隆。

4

2 回答 2

3

正如 Tobias 所说,通常copy消息是作为浅拷贝实现的。

从语义上讲,copy在 Self 中几乎意味着“给我一个安全/有用的副本”。对于许多对象来说,这只是一个浅拷贝。

对象负责实现自己的copy,或者通过委托给纯浅拷贝方法(例如在其中实现)traits clonable或通过拥有自己的copy插槽来实现。

例如,变形通常copy通过给您一个可用的副本而不是浅层副本来响应消息。不应该复制的对象也经常实现或委托给一个方法copy = (self),以便复制的尝试只返回原始对象。

如果你想要一个严格的浅拷贝,大多数可拷贝对象都会响应,clone尽管这应该小心使用。基础是 VM 定义的原始方法_Clone,它是浅拷贝。

于 2013-07-23T05:07:46.430 回答
1

通常,自我中的克隆是浅拷贝。

关于你的评论,是的,它会改变。这就是你克隆“空”原型的原因。

请注意,当您克隆原型以制作新原型时,self 知道复制可以选择性地将插槽内容复制更深一层。

于 2013-07-21T12:12:03.470 回答