问题标签 [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.
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。所以我不能用这种方法为所有这些设置框架。
java - 枚举类型引用或原语(带有示例) - 浅/深复制
我的问题非常基本,但我想 100% 了解所有内容。SO中的许多问题都参考了我的帖子,但我还没有找到令人满意的答案。
我们知道java中的枚举是引用类型。让我们考虑以下代码段:
输出非常明显,因为 Test 的拷贝构造函数做了一个浅拷贝:
但是因为 java 中的枚举也是引用类型,所以我不明白一件事。让我们用 Enum 替换 A 类:
我期待输出:
但我有:
问:为什么?我的想法哪里不对?
lisp - 如何创建结构的深层副本
如何在 Common Lisp 中复制结构?我创建了一个结构,如:
Board 是一个二维数组。我试着做:
当我更改某些内容时new-state
,二维数组中的更改也会发生在state
. 如何创建结构的副本state
并独立更改它?
c++ - [C++ pass-by-value]:被调用函数可以修改原始变量的内容吗?
我一直假设在 [c++] 中使用 [pass-by-value] 传递变量会复制它们,因此接收这些副本的函数不能更改原始变量的内容。
我猜这是因为当参数按值传递时,[copy-constructor] 被调用,如果它没有被程序员覆盖,默认的 [copy-constructor] 会执行 [shallow-copy] 而不是 [deep-copy] !
所以我的问题是为什么他们称它为按值传递,而在类中有指针的情况下,函数可以访问该指针的引用并可能损坏它。还有这个结论正确吗?“只要类中有指针,并且您可以按值传递该类的对象作为函数参数,请定义复制构造函数!”
如果这个错误很有名,有人知道这个问题的名称或短语吗?
以下是导致修改列表的代码。此类的对象包含一个 int 成员变量以及指向节点成员变量列表的指针。
下面的代码打印 2。然后打印 2 3 !
python - Python:编写一个函数来测试 list1 是否是 list2 的浅拷贝
为了测试 lst1 是否是 lst2 的浅拷贝,我这样做了:
但是,如果两个列表共享第一个元素的副本,但不共享其他任何元素,我认为这不会起作用。如何更改函数以使所有索引的 id(lst1[idx]) 必须与 id(lst2[idx]) 相同?
另外,对于浅拷贝和深拷贝的区别,我还是有点模糊。如果我想让这个函数测试 lst1 是否是 lst2 的深层副本,我应该做哪些修改?
谢谢!
ios - 如何为多个选项卡使用相同的 [Storyboard] 视图,并根据所选选项卡对其进行一些小改动?(iOS)
我知道这个问题的措辞有点奇怪,但让我解释一下我要做什么:
假设我有一个带有 2 个选项卡的应用程序,每个选项卡都有自己的视图。两个视图几乎完全相同,除了一个包含一个或两个按钮,另一个没有,反之亦然。
我已经在 Storyboard 模式下创建了一个视图,现在我想对其进行一点点更改,并为另一个选项卡重用相同的视图。
我不想做一个深拷贝,因为如果我改变一个,那么我就必须改变另一个,这可能会导致两者之间的一些不一致。
那么我应该如何为多个选项卡使用相同的通用视图,并根据我所在的选项卡对其进行一些小改动?
我应该在情节提要视图中添加通用内容,然后以编程方式添加特定的选项卡专有内容吗?如果我这样做了,我需要一种方法来检测选择了哪个选项卡,对吧?有没有办法做到这一点?
感谢您的任何建议!
python - 浅拷贝:为什么列表在改变而不是字符串?
我知道,当您对字典进行浅拷贝时,实际上是在复制参考资料。所以如果我这样做:
所以列表 ['a','b','c'] 的引用被复制到 y 中。每当我更改列表(x['key'].remove('a')
例如)时, dict x 和 y 都会更改。这部分我明白了。但是当我考虑下面这样的情况时:
当我这样做时y['user']='guest'
, x['user'] 不会改变,但列表仍然共享相同的引用。所以我的问题是是什么使字符串与列表不同?这背后的机制是什么?
java - 清除或设置 null 到 java 中的对象
我最近正在研究释放 Java 对象占用的内存。这样做时,我对如何在 Java 中复制(浅/深)对象以及如何避免在对象仍在使用时意外清除/无效对象感到困惑。
考虑以下场景:
- 将 a
ArrayList<Object>
作为参数传递给方法。 - 将 a 传递
ArrayList<Object>
给要由线程处理的可运行类。 - 将 a
ArrayList<Object>
放入 aHashMap
中。
现在在这种情况下,如果我调用list = null;
or list.clear();
,对象会发生什么?在哪些情况下对象会丢失,在哪些情况下只有引用设置为空?
我想这与对象的浅拷贝和深拷贝有关,但是在哪些情况下会发生浅拷贝,在哪些情况下会在 Java 中发生深拷贝?
c# - 在 C# 中创建结构的浅表副本
我试图搜索我的答案,发现它们是关于 C 而不是 C#,所以想到发布它。
我的问题在这里可能是微不足道的。
根据我的理解(简单来说)
复制完成后
浅拷贝 -> 主对象和拷贝对象(引用或值类型)应该指向内存中的同一个对象
DeepCopy -> 主对象和复制对象(引用或值类型)应该指向内存中的不同对象
继续进行此操作,我在 C# 中有一个结构,并尝试对其进行浅拷贝。我尝试使用“MemberwiseClone”方法,但我猜它只适用于引用类型。对于值类型,我认为“MemberwiseClone”方法会将其装箱到一个对象中,然后将其拆箱到堆栈中的不同内存地址中。
我尝试过的如下。
我的问题是如何(如果可能的话)创建一个简单结构的浅表副本?
我希望我的基本原理在这里是正确的,而不是胡说八道。如果我在我所做的任何陈述中有错误,请纠正我。
问候,
萨马尔
c# - 浅拷贝还是深拷贝?
我对这两种将一个对象复制到另一个对象的方法有点陌生。我很困惑,无法找出深拷贝和浅拷贝之间的主要区别。我已经经历了很多关于这一点的理论,但我需要用适当的例子来解释。我有程序可以将一个对象复制到另一个对象中. -->
这是浅拷贝还是深拷贝?任何人都可以提供理由的答案。如果是深拷贝,请提供该程序的浅拷贝代码,该程序执行相同的对象复制工作,反之亦然。
如果上面是浅拷贝,那么即使这个也应该是浅拷贝-->