首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自我语言中的克隆是深层克隆还是浅层克隆?

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

Stack Overflow用户
提问于 2013-07-21 17:21:07
回答 2查看 255关注 0票数 1

我在试着理解自己的语言。

我怀疑的是,无论是用自己的语言克隆深克隆还是浅克隆。即,克隆是仅克隆对象插槽还是克隆插槽内的对象都会被克隆。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-21 20:12:03

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

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

请注意,当你克隆一个原型来制作一个新的原型时,self知道copy-downs会有选择地将槽内容复制到更深一层。

票数 1
EN

Stack Overflow用户

发布于 2013-07-23 13:07:46

正如Tobias所说,通常copy消息被实现为浅层副本。

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

对象负责实现它们自己的copy,要么委托给纯粹的浅复制方法,比如traits clonable中的实现,要么拥有自己的copy槽。

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

如果你想要一个严格的浅层复制,大多数可复制的对象都会响应clone,尽管这应该小心使用。在基础上是VM定义的原语方法_Clone,它是一个浅层副本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17770821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档