问题标签 [shallow-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 投票
3 回答
534 浏览

ios - 当变量值改变时如何改变视图的框架?

在我的视图控制器中,视图很少。该视图的所有框架都取决于变量

CGF浮动边框宽度

这些视图的定义如下

borderwidth当我从另一个类更改值时,我想更改 sec1 的框架。我们怎么能这样做?我知道

[sec1 setFrame:CGRectMake(self.borderWidth, self.borderWidth,self.frame.size.width/2-(self.borderWidth*3/2),self.frame.size.height/2 - (self.borderWidth*3/2) )];

会改变框架,但有很多uiviews。所以我不能用这种方法为所有这些设置框架。

0 投票
1 回答
4521 浏览

java - 枚举类型引用或原语(带有示例) - 浅/深复制

我的问题非常基本,但我想 100% 了解所有内容。SO中的许多问题都参考了我的帖子,但我还没有找到令人满意的答案。

我们知道java中的枚举是引用类型。让我们考虑以下代码段:

输出非常明显,因为 Test 的拷贝构造函数做了一个浅拷贝:

但是因为 java 中的枚举也是引用类型,所以我不明白一件事。让我们用 Enum 替换 A 类:

我期待输出:

但我有:

问:为什么?我的想法哪里不对?

0 投票
3 回答
1823 浏览

lisp - 如何创建结构的深层副本

如何在 Common Lisp 中复制结构?我创建了一个结构,如:

Board 是一个二维数组。我试着做:

当我更改某些内容时new-state,二维数组中的更改也会发生在state. 如何创建结构的副本state并独立更改它?

0 投票
3 回答
738 浏览

c++ - [C++ pass-by-value]:被调用函数可以修改原始变量的内容吗?

我一直假设在 [c++] 中使用 [pass-by-value] 传递变量会复制它们,因此接收这些副本的函数不能更改原始变量的内容。

我猜这是因为当参数按值传递时,[copy-constructor] 被调用,如果它没有被程序员覆盖,默认的 [copy-constructor] 会执行 [shallow-copy] 而不是 [deep-copy] !

所以我的问题是为什么他们称它为按值传递,而在类中有指针的情况下,函数可以访问该指针的引用并可能损坏它。还有这个结论正确吗?“只要类中有指针,并且您可以按值传递该类的对象作为函数参数,请定义复制构造函数!”

如果这个错误很有名,有人知道这个问题的名称或短语吗?

以下是导致修改列表的代码。此类的对象包含一个 int 成员变量以及指向节点成员变量列表的指针。

下面的代码打印 2。然后打印 2 3 !

0 投票
3 回答
200 浏览

python - Python:编写一个函数来测试 list1 是否是 list2 的浅拷贝

为了测试 lst1 是否是 lst2 的浅拷贝,我这样做了:

但是,如果两个列表共享第一个元素的副本,但不共享其他任何元素,我认为这不会起作用。如何更改函数以使所有索引的 id(lst1[idx]) 必须与 id(lst2[idx]) 相同?

另外,对于浅拷贝和深拷贝的区别,我还是有点模糊。如果我想让这个函数测试 lst1 是否是 lst2 的深层副本,我应该做哪些修改?

谢谢!

0 投票
1 回答
390 浏览

ios - 如何为多个选项卡使用相同的 [Storyboard] 视图,并根据所选选项卡对其进行一些小改动?(iOS)

我知道这个问题的措辞有点奇怪,但让我解释一下我要做什么:

假设我有一个带有 2 个选项卡的应用程序,每个选项卡都有自己的视图。两个视图几乎完全相同,除了一个包含一个或两个按钮,另一个没有,反之亦然。

我已经在 Storyboard 模式下创建了一个视图,现在我想对其进行一点点更改,并为另一个选项卡重用相同的视图。

我不想做一个深拷贝,因为如果我改变一个,那么我就必须改变另一个,这可能会导致两者之间的一些不一致。

那么我应该如何为多个选项卡使用相同的通用视图,并根据我所在的选项卡对其进行一些小改动?

我应该在情节提要视图中添加通用内容,然后以编程方式添加特定的选项卡专有内容吗?如果我这样做了,我需要一种方法来检测选择了哪个选项卡,对吧?有没有办法做到这一点

感谢您的任何建议!

0 投票
2 回答
263 浏览

python - 浅拷贝:为什么列表在改变而不是字符串?

我知道,当您对字典进行浅拷贝时,实际上是在复制参考资料。所以如果我这样做:

所以列表 ['a','b','c'] 的引用被复制到 y 中。每当我更改列表(x['key'].remove('a')例如)时, dict x 和 y 都会更改。这部分我明白了。但是当我考虑下面这样的情况时:

当我这样做时y['user']='guest', x['user'] 不会改变,但列表仍然共享相同的引用。所以我的问题是是什么使字符串与列表不同?这背后的机制是什么?

0 投票
7 回答
82720 浏览

java - 清除或设置 null 到 java 中的对象

我最近正在研究释放 Java 对象占用的内存。这样做时,我对如何在 Java 中复制(浅/深)对象以及如何避免在对象仍在使用时意外清除/无效对象感到困惑。

考虑以下场景:

  1. 将 aArrayList<Object>作为参数传递给方法。
  2. 将 a 传递ArrayList<Object>给要由线程处理的可运行类。
  3. 将 aArrayList<Object>放入 aHashMap中。

现在在这种情况下,如果我调用list = null;or list.clear();,对象会发生什么?在哪些情况下对象会丢失,在哪些情况下只有引用设置为空?

我想这与对象的浅拷贝和深拷贝有关,但是在哪些情况下会发生浅拷贝,在哪些情况下会在 Java 中发生深拷贝?

0 投票
4 回答
11100 浏览

c# - 在 C# 中创建结构的浅表副本

我试图搜索我的答案,发现它们是关于 C 而不是 C#,所以想到发布它。

我的问题在这里可能是微不足道的。

根据我的理解(简单来说)

复制完成后

浅拷贝 -> 主对象和拷贝对象(引用或值类型)应该指向内存中的同一个对象

DeepCopy -> 主对象和复制对象(引用或值类型)应该指向内存中的不同对象

继续进行此操作,我在 C# 中有一个结构,并尝试对其进行浅拷贝。我尝试使用“MemberwiseClone”方法,但我猜它只适用于引用类型。对于值类型,我认为“MemberwiseClone”方法会将其装箱到一个对象中,然后将其拆箱到堆栈中的不同内存地址中。

我尝试过的如下。

我的问题是如何(如果可能的话)创建一个简单结构的浅表副本?

我希望我的基本原理在这里是正确的,而不是胡说八道。如果我在我所做的任何陈述中有错误,请纠正我。

问候,

萨马尔

0 投票
6 回答
58527 浏览

c# - 浅拷贝还是深拷贝?

我对这两种将一个对象复制到另一个对象的方法有点陌生。我很困惑,无法找出深拷贝和浅拷贝之间的主要区别。我已经经历了很多关于这一点的理论,但我需要用适当的例子来解释。我有程序可以将一个对象复制到另一个对象中. -->

这是浅拷贝还是深拷贝?任何人都可以提供理由的答案。如果是深拷贝,请提供该程序的浅拷贝代码,该程序执行相同的对象复制工作,反之亦然。

如果上面是浅拷贝,那么即使这个也应该是浅拷贝-->