arrays - Swift 中数组的赋值和复制行为

标签 arrays swift

如果我从另一个数组创建数组,例如:

var ArrayOne = [1,2,3,4]
var ArrayTwo = ArrayOne
var ArrayThree = ArrayTwo

现在根据数组的分配和复制行为,如果我更改 ArrayTwo 的任何值,它将反射(reflect)在 ArrayOne 和 ArrayThree 中。但是如果我在 arrayTwo 中追加/删除,它不会反射(reflect)在 ArrayOne/ArrayThree 中,因为数组的实例发生了变化。

ArrayTwo[0] = 100
println(ArrayTwo[0])
// 100
println(ArrayThree[0])
// 100

ArrayTwo.append(5)
ArrayTwo[0] = 999
println(ArrayTwo[0])
// 999
println(ArrayThree[0])
// 100

有什么方法可以同时修改所有数组,而无需在每次修改(附加/删除)时创建新的数组副本/实例。

最佳答案

数组、字典和字符串都是结构体,在 Swift 中按值传递。要获得此行为,您可以尝试使用 NSArray 或创建您自己的 Swift 类。

关于arrays - Swift 中数组的赋值和复制行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507141/

相关文章:

java - 在java中没有for循环将数组拆分为两部分

arrays - 打印正则表达式匹配 Perl

ios - 在 Swift 中使用框架

audio - Swift- 音频实现崩溃 : "EXC_BAD_INSTRUCTION"

ios - 如何将所有坐标放入 map 的边界? fitBounds 等效?

javascript - javascript中的递归函数使用笔迹库返回所选节点的父节点

java - 三维数组以错误的顺序到达串行端口

Jquery - 简单数组,如果项目不存在则将其插入,如果存在则删除项目

ios - 从 URL 字符串中提取的 UITableViewController 中的图像加载缓慢

swift - 如何判断一个字符串是否全部为小写?