一句话结论:Swift 里的 Array、Dictionary、Set 全都是值类型(struct 实现)。
一、核心特性
- 赋值、传参、返回时,逻辑上是拷贝一份
- 修改副本,不会影响原数据
- 底层有 Copy-on-Write(写时复制) 优化,只有真正修改时才拷贝,性能很高
二、代码一眼看懂
1. Array
Swift
var a = [1,2,3]
var b = a
b.append(4)
print(a) // [1,2,3] 没变
print(b) // [1,2,3,4]
2. Dictionary
Swift
var dict1 = ["id": 1]
var dict2 = dict1
dict2["id"] = 2
print(dict1) // ["id": 1]
print(dict2) // ["id": 2]
3. Set
Swift
var s1: Set = [1,2,3]
var s2 = s1
s2.remove(1)
print(s1) // [1,2,3]
print(s2) // [2,3]
三、和引用类型(class)的区别
- 值类型:拷贝内容,互不干扰
- 引用类型:共享同一个对象,一改全改
- 判断:用
==比内容,===比引用地址
四、总结
- Array / Dictionary / Set = 值类型
- 赋值 = 逻辑拷贝
- 修改副本不影响原数据
- 有 COW 写时复制,安全又高效