首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#克隆和#dup有什么区别?

#克隆和#dup有什么区别?
EN

Stack Overflow用户
提问于 2016-12-25 14:14:00
回答 1查看 151关注 0票数 2

因此,我一直在学习没有红宝石背景的水晶,并注意到api文档有#dup#clone,它们基本上可以复制数组。

两者到底有什么区别?api说#dup浅拷贝数组,而#clone深拷贝复制数组。我不知道这到底意味着什么,我应该用哪一种。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-25 19:52:52

#dup将在内存中复制数组,即它包含的项列表,但它不会复制项目本身。变异新数组不会影响前一个数组(例如,pushpop),但是变异它的任何项都会影响到前一个数组的项,因为项是相同的对象。

#clone将通过递归调用#clone来复制内存中的数组列表,但也会复制其项。这是原始数组的完整克隆。变异任何东西,即使是深嵌套的对象,都不会影响原始内容。

请注意,这适用于任何对象,而不仅仅是数组,而且可以通过覆盖自己对象中的方法来自定义行为。

尽管如此,它只适用于对象数组(例如,类实例)。对于原语数组(整数、浮点、结构.)这些项将与#dup的数组列表一起复制。

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

https://stackoverflow.com/questions/41321844

复制
相关文章

相似问题

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