在Swift编程语言中,它说:
"Swift整数,浮点数,布尔值,字符串,数组和字典中的所有基本类型都是值类型,并且在幕后实现为结构."
" 结构实例总是按值传递,类实例总是通过引用传递"
"如果将Array实例分配给常量或变量,或者将Array实例作为参数传递给函数或方法调用,则不会在分配或调用发生时复制该数组的内容.相反,两个数组共享相同的元素值序列.当你通过一个数组修改元素值时,结果可以通过另一个数组观察到."
很明显,Swift在阵列方面自相矛盾.数组是值类型还是引用类型?
数组是特殊情况.它们是具有特殊行为的值类型.
在您找到第3点的页面上,有足够的信息可以理解原因:
Swift的Array类型的赋值和复制行为比其Dictionary类型更复杂.当您使用数组的内容时,Array提供类似C的性能,并且仅在需要复制时才复制数组的内容
并在您发言后立即:
相反,两个数组共享相同的元素值序列.通过一个数组修改元素值时,结果可以通过另一个数组观察到.
对于数组,只有在执行可能会修改数组长度的操作时才会进行复制.
所以,阅读这些观点我们理解:
最后一点:记住,复制数组时,只复制值类型(结构,枚举,基本类型).不复制对象,仅复制其引用(指针)
当我尝试以下代码时,swift 中的数组是值类型:
var myArray1 = [1, 2, 3]
var myArray2 = myArray1
myArray2 += 4;
println(myArray1);
println(myArray2);
Run Code Online (Sandbox Code Playgroud)
它为 myArray1 和 myArray2 打印不同的值。如果它们共享相同的引用,则值必须相同。
| 归档时间: |
|
| 查看次数: |
4699 次 |
| 最近记录: |