我在试着理解自己的语言。
我怀疑的是,无论是用自己的语言克隆深克隆还是浅克隆。即,克隆是仅克隆对象插槽还是克隆插槽内的对象都会被克隆。
发布于 2013-07-21 20:12:03
通常,self中的克隆是浅拷贝。
关于你的评论,是的,它会改变。这就是你克隆“空”原型的原因。
请注意,当你克隆一个原型来制作一个新的原型时,self知道copy-downs会有选择地将槽内容复制到更深一层。
发布于 2013-07-23 13:07:46
正如Tobias所说,通常copy消息被实现为浅层副本。
从语义上讲,copy in Self的意思是“给我一个安全的/有用的副本”。对于许多对象来说,这只是一个浅显的拷贝。
对象负责实现它们自己的copy,要么委托给纯粹的浅复制方法,比如traits clonable中的实现,要么拥有自己的copy槽。
例如,变形通常通过为您提供可用的副本来响应copy消息,而不是提供浅副本。此外,不应该复制的对象通常实现或委托给方法copy = (self),因此尝试复制时只返回原始对象。
如果你想要一个严格的浅层复制,大多数可复制的对象都会响应clone,尽管这应该小心使用。在基础上是VM定义的原语方法_Clone,它是一个浅层副本。
https://stackoverflow.com/questions/17770821
复制相似问题