数组把相同类型的值存放在一个有序链表里。字典把相同类型的值存放在一个无序集合里,这些值可以通过唯一标识符(也就是键)来引用和查找。
在Swift里,数组和字典里所能存放的值的类型是明确的。这意味着你不能误把一个错误类型的值添加到数组或字典里,也意味着你可以明白无误地知道从数组或字典里取得的值会是什么类型的。Swift集合是类型明确的,这保证了你的代码会清楚地知道它们所能处理的值的类型,并让你能在代码开发阶段就发现任何输入错误。
数组(Array)
字典(Dictionary)
使用[] 来创建字典,并使用key 来获取key所对应的value,也可以使用for循环获取。 key 与 valuevar dic = ["key1":"value1", "key2":"vlaue2"]
var value = dic["key1"] // 获取key1 所对应的值
dic["key3"] = "value3"// 给字典中,添加一个,key和vaule。
声明一个空字典: var emptyDictionary =Dictionary<String,Float>() //创建一个Key 是String 类型,Value为Float类型的空字典。
更多关于字典的方法,请查看字典API
数组唯一性:
var a = [1,2,3]
var b = a
var c = b
当改变,a数组中一个值的时候,比如:a[0] = 12 数组长度没有变化,数组就不会发生拷贝,那么 a[0],b[0] c[0] 的值都是相同的一个。
当给数组a添加一个元素,改变数组长度时,Swift会创建这个数组的拷贝,那么a将是原数组的一个独立拷贝。如果在修改a的值的时候,a将会返回与,b,c 不一样的结果。
在操作一个数组,或将其传递给函数以及方法调用之前是很有必要先确定这个数组是有一个唯一拷贝的。通过在数组变量上调用 unshare 方法来确定数组引用的唯一性。(当数组赋 | |||||
给常量时,不能调用 unshare 方法) | |||||
1. b.unsha re() 在 unshare 方法调用后再修改 b 中第一个元素的值,这三个数组(a,b,c)会返回不同的三个值:。
比较2个数组是否共用相同的数组元素可以使用很等于运算符(===) 或者 (!==)
如果仅需要确保你对数组的引用是唯一引用,请调用 unshare 方法,而不是 copy方法。unshare 方法仅会在确有必要时才会创建数组拷贝。copy 方法会在任何时候都创建一个新的拷贝,即使引用已经是唯一引用。 | |||||