问题标签 [deep-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
350 浏览

javascript - 完全基本的 Javascript 参考问题

Javascript 控制台中的以下内容:

产量:

Object foo=[1]

我想为 a 中的每个键在每个数组的 b 中按值复制。有没有更简单的方法?

0 投票
4 回答
1908 浏览

c# - 深拷贝 ASP.NET GridView

我正在为一组同行创建一个自定义控件,但我遇到了障碍。该控件的目的是提供一种简单的方法来实现具有嵌套、排序等的网格。

为了创建嵌套,我有一个子 GridView 作为其余子级的蓝图。我允许开发人员按照他们想要的方式对其进行配置,然后自定义控件会制作许多相同的副本。

我的问题是我不能完美地复制子网格。MemberWiseClone() 似乎不起作用,并且 GridView 不可序列化。

我当前的解决方案是手动复制我知道我们需要的字段列表(ID、CssClass 等),但这显然是不够的,甚至不涉及 EventHandlers。

有没有一种很好的方法来深度复制 GridView——或者——提供我使用另一种方法描述的功能?

0 投票
3 回答
4697 浏览

arrays - Scala中二维数组的深拷贝?

如何在 Scala 中对二维数组进行深度复制?

例如

我希望 val b 复制 a 的值但不指向同一个数组。

0 投票
4 回答
11040 浏览

c++ - std::map 的浅/深拷贝

我将如何最好地实施这些?我想到了这样的事情:

成员data定义如下:

不幸的是,这不起作用。这是编译器错误,我不太了解它们:

不知何故,这对我来说看起来不必要地复杂。这是真的吗?我可以让它变得更好吗?

顺便说一句,我从 shape 派生的类中有 clone() 方法。也许我可以将它们用于 clone_deep 方法?他们还好吗?它们看起来像这样:

0 投票
1 回答
804 浏览

python - 深度复制一个简单的 Python 对象

我有一个定义__deepcopy__方法的对象。我想要一个函数,它不会通过它给出的方法来深度复制它,而是以默认方式object复制类的对象。

我怎么能那样做?我想我可以尝试编写代码,但可能有很多我不会想到的“陷阱”。

我这样做的原因是因为我有一个实现__deepcopy__方法的对象类,并且该方法检查某些条件,并且在某些情况下它会以某种方式深度复制对象,而在其他情况下它将在默认object方式。

0 投票
3 回答
5495 浏览

python - 如何调试针对自定义类型调用 Python 的 copy.deepcopy() 的问题?

在我的代码中,我尝试使用copy.deepcopy. 问题是在某些情况下它会出现以下错误:

经过大量挖掘,我发现我能够使用以下代码重现错误:

问题似乎是在某些时候它试图复制NotImplementedType内置。问题是它为什么要这样做?我在课堂上没有被覆盖__deepcopy__,也不是一直发生。有没有人有任何提示来追踪制作这种类型的副本的请求来自哪里?

我已经在copy模块本身中放置了一些调试代码,以确保这是正在发生的事情,但是问题发生的地方在递归堆栈中很远,很难理解我所看到的。

0 投票
4 回答
2077 浏览

apache-flex - Flex:FileReference 的 DeepCopy

在我的项目中,我让用户使用 FileReference 类来挑选图片。然后,我使用 load() 函数将这些图片加载到它们的 .data 属性中。在此之后,我执行一些本地操作并将它们发送到服务器。

我想做的是能够再次遍历选择的 FileReferences,将它们加载到 .data 属性中,执行不同的操作并将它们再次发送到服务器。我知道我应该能够从用户调用的事件中做到这一点,这不是问题。

问题是,一旦第一次加载 FileReference,我无法以任何方式卸载它,而且我无法将所有图片的数据保留在内存中,因为它们非常庞大。

所以我想我只能做一件事,就是在 FileReference 上执行 DeepCopy ......然后我可以加载第一个版本,将其废弃并将副本用于第二次“运行”。

我尝试使用 ObjectUtil.copy,但是当我访问副本的例如 .name 属性时,它失败了:

在 flash.net::FileReference/get name()

相关片段:

FileReference 类的某些受保护属性是否会阻止它被复制?如果是这样,我可以以某种方式回避这个吗?或者我的整体问题还有其他解决方案吗?

我感谢任何提示/想法!

0 投票
2 回答
2065 浏览

c# - 如何深度复制包含 lambda 表达式的对象?

又是我,关于我的《洛克人》游戏。我切换到组件系统,以便对象可以由数据驱动。一切正常,但我遇到了问题。

我的对象有状态,用输入文件指定。这些状态具有将它们转换到其他状态的触发器。状态更改的条件也在输入文件中,并被解析为 lambda 表达式。现在我需要深度复制我的对象,并且我需要 lambdas 来引用副本的成员,而不是原始的成员。程序加载时会从文件中加载原件,但之后可以随时复制(想想发射的弹丸)。

这是一段大大简化的代码:

不仅如此,触发器实际上会导致状态更改,然后新状态的初始化程序调用该 Action,但我在这里对其进行了简化。

所以问题是当我深拷贝这个组件时,或者无论如何尝试,我不知道如何让 lambdas 引用副本的 DependentComponent 实例,而不是原始的实例。我已经确保实体的深层副本正在获得一个新的 DependentComponent,但 lambda 只是引用原始组件。委托一旦创建就基本上锁定到特定实例吗?我必须创建一个新的吗?我不想再次从文件中加载整个实体。

0 投票
2 回答
1183 浏览

linq - Enumerable.Repeat() 是否进行深层复制?

如果我使用以下内容:

列表中的第二个元素会是第一个元素的深层副本吗?

注意: myCustomObject 可以是任何对象

编辑:您能否让我知道在处理自定义对象时 Enumerable.Repeat 的潜在用途?

谢谢

0 投票
5 回答
1129 浏览

c# - 在 C# 中的二进制序列化中排除父对象

我对 C# 中的二进制序列化有疑问

我需要能够深度克隆 B 类的对象(当然还有它在图中的所有子对象)。我想通过使用二进制序列化来实现这一点。在这个问题的背景下,讨论是否是最好的方法是无关紧要的。

假设我有这个类结构:

使用二进制序列化进行深度克隆的辅助类(我从网上某处得到这个方法代码,不记得在哪里 TBH,但看起来还不错)

所以在我的应用程序的某个时刻,我点击了以下代码:

问题是调试器抱怨 A 类没有被标记为可序列化。

但我不想序列化 A,我想序列化 B,它是子对象 C。

我猜它也试图序列化父对象 A,因为它在对象图中都是相互关联的。但是有什么办法可以将它排除在序列化之外吗?