摘要訊息 : 學習 Swift 中的陣列和字典.
0. 前言
本文于 2022 年 3 月 17 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.
1. 数组的基本操作
我們可以用
var type_array_1 = Array ()
var type_array_2 = [type]()
let int_array = [1, 2, 3, 4]
來定義數組. 其中, type
是数据类型.
数组的访问可以直接通过下标语法实现, 数组的第 i 个元素对应的下表为 i - 1 :
let int_array = [1, 2, 3, 4, 5]
print(int_array[1]) // 结果 : 2
print(int_array) // 結果 : [1, 2, 3, 4, 5]
print(int_array.isEmpty) // 判断数组是否为空, 结果 : false
print(int_array.count) // 获得数组中元素的数量, 结果 : 5
print(int_array.contains(3)) // 判断数组中是否包含 3 这个元素, 结果 : true
Swift 中, 可以使用 append
或者 "+ [...]
" 的方法对数组的元素进行增加; 可以使用 insert
在指定的位置增加某个元素; 可以直接通过下标定位到指定位置直接对元素进行修改. 另外, 還可以通过一个下标区间 [min_number ..< max_number]
或者 [min_number ... max_number]
对指定元素进行修改 :
var int_array = [1, 2, 3, 4, 5]
int_array.append(6) // [1, 2, 3, 4, 5, 6]
int_array += [6] // [1, 2, 3, 4, 5, 6, 6]
int_array.insert(100, at : 2) // [1, 2, 100, 3, 4, 5, 6, 6]
int_array[0] = 0 // [0, 2, 100, 3, 4, 5, 6, 6]
int_array[3…6] = [1, 2, 3, 4] // [0, 2, 100, 1, 2, 3, 4, 6]
Swift 数组提供了几种方法用来删除数组中的元素 :
var int_array = [0, 2, 100, 1, 2, 3, 4, 6]
int_array.removeFirst() // [2, 100, 1, 2, 3, 4, 6]
int_array.removeLast() // [2, 100, 1, 2, 3, 4]
int_array.remove(at : 2) // [2, 100, 2, 3, 4]
int_array.removeSubrange(Range(1 ..< 3)) // [2, 3, 4]
int_array.removeAll() // []
Swift 提供了 sort
函数对数组进行排序, 默认是升序. 當然, 可以通過添加相关参数可以实现对数组进行降序排序或者按照元组中的某一个元素进行排序 :
var int_array = [11, 22, 3, 14, 25]
int_array.sort() // [3, 11, 14, 22, 25]
int_array.sort(by : >) // [25, 22, 14, 11, 3]
var user_list = [(name : "Thomas", age : 20), (name : "John", age : 18), (name : "Bill", age : 28)]
user_list.sort(by : {$0.name > $1.name}) // [[(name : "Bill", age : 28), (name : "John", age : 18), (name : "Thomas", age : 20)]], 对 user_list 元组数组按照名字 name 的升序进行排序
user_list.sort(by : {$0.age < $1.age}) // userList == [[(name : "John", age : 18), (name : "Thomas", age : 20), (name : "Bill", age : 28)]], 对 user_list 元组数组按照年龄 age 的升序进行排序
2. 多維數組
在数组中仍然存在其他数组這樣的多维数组也被 Swift 支援, 通过几次索引可以找到存储的相关元素的具体值就是几维数组 :
let type_array = [[type_array]] () // k 维数组就有 k 个 []
let int_array = [[1, 2, 3], [4, 5, 6]]
var numbers = [[1, 2, 3], [1, 2, 3]]
numbers.append([4, 5, 6]) // [[1, 2, 3], [1, 2, 3], [4, 5, 6]]
print(numbers[2]) // 結果 : [1, 2, 3]
3. 數組的尋訪
我們一般通过 for
-in
循环对数组遍历 :
var int_array = [1, 2, 3]
for index in 0..< int_array.count {
print(index)
}
/* 结果 :
1
2
3
*/
for index in int_array {
print(index)
}
/* 结果 :
1
2
3
*/
var int_array_2 = [1, 2, 3, 4, 5, 6]
let range = 3 ..< int_array_2.count
for index in zip(range, int_array_2[range]) {
print(index)
}
/* 结果 :
4
5
6
*/
let user_list = [(name : "Thomas", age : 20), (name : "John", age : 18), (name : "Bill", age : 28)]
for (name, age) in user_list {
print(name + " 的年龄是 \(age).")
}
/* 结果 :
Thomas 的年龄是 20.
John 的年龄是 18.
Bill 的年龄是 28.
*/
let multi_dimension_array = [[1, 2, 3], [4, 5, 6]]
for first_dimension in multi_dimension_array {
for num in first_dimension {
print(num)
}
}
/* 结果 :
1
2
3
4
5
6
*/
4. 字典
字典就是索引帶有名稱的數組, 我們可以通過
let example = Dictionary <key_type, value_type> ()
let dialling_codes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
print(dialling_codes["010"]) // 结果 : Beijing
dialling_codes["020"] = "Guangdong" // ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen", "020" : Guangdong]
dialling_codes.updateValue("北京", forKey : "010") // ["010" : "北京", "021" : "Shanghai", "0592" : "Xiamen", "020" : Guangdong]
dialling_codes.removeValue(forKey : "010") // ["021" : "Shanghai", "0592" : "Xiamen", "020" : Guangdong]
其中, key_type
和 value_type
为数据类型.
字典的尋訪和數組有很大不同, 分為對鍵和值 :
let dialling_codes = ["010" : "Beijing", "021" : "Shanghai", "0592" : "Xiamen"]
for key in dialling_codes {
print(key)
}
/* 结果 :
010
021
0592
*/
for value in dialling_codes {
print(value)
}
/*结果 :
Beijing
Shanghai
Xiamen
*/
for (key, value) in dialling_codes {
print(key + " : " + value)
}
/*结果 :
021 : Shanghai
010 : Beijing
0592 : Xiamen
*/
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :