Swift 中有哪些可用的集合型別?
在本教程中,您將學習 Swift 語言中所有可用的集合,例如陣列、字典和集合。
集合型別
- 陣列
- 集合
- 字典
這些集合在 Swift 中是泛型的,這意味著它們可以儲存任何型別的但同一種的值。它們可以處理字串、整數、類、結構體、布林值等。您可以儲存任何型別的值,並且不會錯誤地插入錯誤型別的值。如果您定義了一個字串陣列,則不能插入 Int 或任何其他型別的值。
關於集合的一些要點
型別安全
我們知道 Swift 是一種型別安全的語言,因此集合也是型別安全的。這意味著您可以在集合中儲存任何型別的物件。但是您不能插入另一種型別的值。
泛型
Swift 的集合實現為泛型集合。這意味著您可以在任何集合中儲存任何型別的元素。沒有單獨的集合來儲存不同型別的元素。例如,您可以建立一個字串陣列、類物件、整數等。
可變性
使用 let 關鍵字宣告的集合是不可變的,這意味著在初始化後您無法更改陣列元素。如果您希望在初始化後更改集合,請使用 var 關鍵字將其設為變數。
按值傳遞
Swift 的集合型別是按值傳遞的,而不是按引用傳遞的。當集合被賦值給另一個變數或作為引數傳遞時,會建立原始集合的副本。在將集合傳遞給方法或賦值給另一個變數後對其進行的更改不會反映在原始集合的狀態中。
迭代
您可以使用迴圈遍歷集合。您可以使用 for-in 或 forEach 迴圈來迭代集合的元素。對於字典,您有兩個單獨的陣列用於鍵和值來迭代它們。
Swift 的集合型別非常重要。讓我們深入瞭解每一個。
陣列
陣列以有序列表的形式儲存相同型別的多個值。陣列可以儲存重複的值。Swift 的 Array 型別與 Foundation 的 NSArray 類橋接。
語法
您可以像下面這樣宣告一個空陣列:
let array: [Type] = [] let array: Array<Type> = [] let array = [Type]()
您可以在宣告陣列時為其賦值,如下所示:
var arrayStrings: [String] = ["Alpha", "Beta", "Delta"] // array of strings let arrayInts: Array<Int> = [12, 23, 34, 45] // array of integers
下標
陣列可以透過將索引整數傳遞到陣列名稱字尾的一對方括號中來進行下標訪問,如下所示:
訪問元素
let stringElement = arrayStrings[2] // "Delta" let intElement = arrayInts[3] // 45
賦值元素
您還可以像下面這樣為特定索引賦值:
示例
var arrayStrings: [String] = ["Alpha", "Beta", "Delta"] // array of strings var arrayInts: Array<Int> = [12, 23, 34, 45] // array of integers arrayStrings[2] = "Gamma" print(arrayStrings) arrayInts[1] = 15
輸出
["Alpha", "Beta", "Gamma"]
注意 - 要修改陣列元素,陣列必須是變數而不是常量。此外,當您使用下標賦值新值時,索引必須在陣列範圍內,否則程式碼將崩潰。
以下是對陣列執行的一些常用方法和屬性
.append() - 在最後位置追加新元素。
.removeFirst() - 刪除並返回第一個元素。
.removeLast() - 刪除並返回最後一個元素。
.popLast() - 彈出最後一個元素。
.reverse() - 反轉元素。
.filter() - 根據條件過濾陣列元素。
.suffix() - 返回一個子序列,該子序列最多包含給定最大長度,其中包含最後的元素。
.sort() - 使用給定的謂詞作為元素之間比較的依據,對陣列進行就地排序。
.isEmpty - 檢查陣列是否為空。
.count - 獲取陣列中包含的元素個數。
字典
字典以鍵值對的形式儲存與鍵關聯的值。字典的鍵和值不保持順序。
您可以使用冒號 (:) 字元建立帶有鍵和值的字典,並將它們分隔開。
語法
let dictionary: [KeyType: ValueType] = [:] let dictionary: Dictionary<KeyType, ValueType> = [:] let dictionary = [KeyType: ValueType]()
let dictionary1: [String: Int] = ["Alpha": 1, "Beta": 2, "Gamma": 3] let dictionary2: Dictionary<Int, String> = [1: "One", 2: "Two", 3: "Three"]
注意 - 當您不確定值型別時,您可以使用任何型別的 values,如下所示:
var dictionary: [String: Any] = ["name": "Amit Gupta", "age": 22, "address": "New Delhi, India", "score": 8.9]
在上面的示例中,您可以看到如何建立字典來儲存不同型別的值。您將在大多數專案中使用它。但是,不建議使用 Any 關鍵字建立字典。始終宣告值型別,例如 String、Int 等。
下標
您可以透過傳遞用方括號 [] 括起來的鍵名來讀取字典中的元素,如下所示:
示例
var dictionary: [String: Any] = ["name": "Amit Gupta", "age": 22, "address": "New Delhi, India", "score": 8.9] if let name = dictionary["name"] as? String { print("Name found: \(name)") } else { print("name does not found") }
輸出
Name found: Amit Gupta
您可以像下面這樣為字典中用方括號 [] 括起來的鍵名分配新值:
dictionary["name"] = "Rahul Gupta"
集合
集合以無序列表的形式儲存相同型別的唯一值。當順序不重要並且您想要確保元素唯一性時,可以使用集合代替陣列。
示例
var numbers: Set = [10, 20, 30, 40] var names: Set = ["Amit", "Rahul", "Pravin", "Sachin"]
如何在集合中插入新元素
names.insert("mohit")
結論
您學習了 Swift 中的集合型別以及如何使用它們。集合在 Swift 語言中起著重要的作用。此外,Swift 還提供了不同的方法和屬性來對集合執行不同的操作。深入研究並進行一些練習。