问题标签 [clone]
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.
php - 如何在 PHP 中创建对象的副本?
似乎在 PHP 中对象是通过引用传递的。甚至赋值运算符似乎也没有创建对象的副本。
这是一个简单的、人为的证明:
在这两种印刷情况下,我都在“追求”
那么,如何通过值而不是引用将$a传递给set_b() ?
java - 在Java中深度克隆多维数组......?
我有两个具有推断大小的多维数组(实际上它们只是 2D)。如何深度克隆它们?这是我到目前为止所得到的:
相等的测试original.equals(clone);
吐出一个错误。为什么?:|
silverlight-2.0 - 在 Silverlight 中克隆业务对象的最佳方法是什么?
创建 DTO 克隆的最佳方法是什么?Silverlight 中没有 ICloneable 接口或 BinaryFormatter 类。反思是唯一的方法吗?
vba - 在 VBA 中克隆对象?
有没有一种通用的方法来克隆 VBA 中的对象?这样我就可以将 x 复制到 y 而不是仅复制指针?
通过泛型,我的意思是Set y = CloneObject(x)
不必为类创建自己的方法来逐一复制其属性。
c# - 如何在 C# 中克隆通用列表?
我在 C# 中有一个通用的对象列表,并希望克隆该列表。列表中的项目是可克隆的,但似乎没有选项可做list.Clone()
。
有没有简单的方法解决这个问题?
java - Java中的强制可克隆接口
我在 Java 中遇到了一个小问题。我有一个名为 Modifiable 的接口。实现此接口的对象是可修改的。
我还有一个 ModifyCommand 类(带有命令模式),它接收两个 Modifiable 对象(在列表中进一步交换它们 - 这不是我的问题,我已经设计了那个解决方案)。
ModifyCommand 类首先复制 Modifiable 对象。从逻辑上讲,我让我的 Modifiable 接口扩展了 Cloneable。然后接口定义了一个 clone() 方法,它的实现类必须重新定义。
然后,在 ModifyCommand 中,我可以这样做:firstModifiableObject.clone()。我的逻辑是实现 Modifiable 的类必须重新定义 Object 的 clone 方法,因为它们将是 Cloneable (这就是我想要做的)。
问题是,当我定义类实现 Modifiable 并且我想重写 clone() 时,它不会让我说 Object 类中的 clone() 方法隐藏了 Modifiable 中的方法。
我该怎么办?我的印象是“我做错了”......
谢谢,
纪尧姆。
编辑:它认为我会忘记 clone() 的事情。我将a)假设传递给Modifiable对象(实现接口)的对象已经被克隆或b)创建另一个称为copy()的方法,该方法基本上会对Modifiable对象进行深层复制(或者通用解决方案可能会起作用......)。
c++ - C++ 中 clone() 的最佳签名是什么?
正如 Scott Myers 所写,您可以利用 C++ 类型系统中的放松来声明 clone() 以返回指向正在声明的实际类型的指针:
编译器检测到 clone() 返回一个指向对象类型的指针,并允许 Derived 覆盖它以返回一个指向derived 的指针。
最好让 clone() 返回一个暗示所有权语义转移的智能指针,如下所示:
不幸的是,约定的放宽不适用于模板化智能指针,并且编译器将不允许覆盖。
所以,看来我有两个选择:
- 让 clone() 返回一个“哑”指针,并记录客户负责处理它的文件。
- 让 clone() 返回一个智能基指针,并让客户端在需要时使用 dynamic_cast 将它们保存到派生指针。
这些方法之一是首选吗?或者有没有办法让我吃掉我的所有权语义转移并拥有我强大的类型安全性?
c# - C# 反射索引属性
我正在使用反射编写克隆方法。如何使用反射检测属性是索引属性?例如:
到目前为止我的方法:
jquery - 如何克隆 jQuery Listen 插件事件?
我的页面上有一些<tr>
元素,其中一个click()
事件附加到每个元素内部的图像上。我使用此代码
执行以下操作:
- 将那些 s 复制
<tr>
到不同的表中 - 保留
<tr>
s 内图像上的点击事件(由于true
参数)
所有这些工作正常。现在我为这些 s 添加了一个jQuery Listen事件<tr>
,这样用户就不必精确瞄准:他/她可以单击 s 上的任意位置<tr>
,我可以将单击传递给图像。
它的编码如下:
listen() 事件在原始项目上运行良好,但在克隆项目上,listen() 事件失败。图像的点击事件仍然可以正常工作。
这是 Firebug 告诉我的:
...它引用了 jquery.listen-1.0.3-min.js 的第 9 行。
如何使 listen() 事件对克隆的元素起作用?
更新
默认情况下,jQuery 不会在克隆元素上复制事件,但这个插件就是为此而生的。
同时,listen() 插件的作者提出了不同的策略 - 请参阅下面的答案。