复制代码
var ages = ["Peter": 23, "Wei": 35, "Anish": 65, "Katya": 19]
var copiedAges = ages
这个字典的键是字符串String类型,值是Int类型,都是数值类型,那么在赋值的时候都会被完整复制。
复制代码
copiedAges["Peter"] = 24
println(ages["Peter"])
// prints "23"
数组的赋值和复制操作
和字典Dictionary类型比起来,数组Array的赋值和复制操作就更加复杂。Array类型和C语言中的类似,仅仅只会在需要的时候才会完整复制数组的值。
如果将一个数组赋值给一个常量或者变量,或者作为一个参数传递给函数,复制在赋值和函数调用的时候并不会发生。这两个数组将会共享一个元素序列,如果你修改了其中一个,另外一个也将会改变。
对于数组来说,复制只会在你进行了一个可能会修改数组长度操作时才会发生。包括拼接,添加或者移除元素等等。当复制实际发生的时候,才会像字典的赋值和复制操作一样。
下面的例子演示了数组的赋值操作:
复制代码
var a = [1, 2, 3]
var b = a
var c = a
数组a被赋值给了b和c,然后输出相同的下标会发现:
复制代码
println(a[0])
// 1
println(b[0])
// 1
println(c[0])
// 1
如果改变a中的某个值,会发现b和c中的数值也会跟着改变,因为赋值操作没有改变数组的长度:
复制代码
a[0] = 42
println(a[0])
// 42
println(b[0])
// 42
println(c[0])
// 42
但是,如果在a中添加一个新的元素,那么就改变了数组的长度,这个时候就会发生实际的复制操作。如果再改变a中元素的值,b和c中的元素将不会发生改变:








