克隆自我语言深层克隆还是浅层克隆?

时间:2013-07-21 09:21:07

标签: clone self prototype-programming selflanguage

我想了解自我语言。

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

2 个答案:

答案 0 :(得分:3)

正如Tobias所说,copy消息通常是浅层副本。

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

对象负责实现自己的copy,方法是委托一个纯粹的浅层复制方法,例如traits clonable中的实现,或者拥有自己的copy插槽。

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

如果您需要严格的浅色副本,大多数可复制对象都会响应clone,但应谨慎使用。在基础上是VM定义的原始方法_Clone,它是一个浅层副本。

答案 1 :(得分:1)

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

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

请注意,当您克隆原型以创建新原型时,自我知道有copy-downs选择性地将插槽内容复制一级。