Swift學習之十一:數組與字典(Array and Dictionary are collection types)
/* Swift 提供了兩種集合類型,即數組(Array)和字典(Dictionary),存儲值的集合 數組存儲相同類型的順序列表值。字典存儲無序同類型值的集合,通過鍵來查詢和 引用。 在Swift中,數組和字典總是值和鍵的存儲類型是明確的。這意味著不能插入錯誤的類型到字典 和數組中。這種顯示類型可以保證你的代碼中值的類型總是明確的。 */ // 數組類型全型為Array<SomeType>,也可以使用SomeType[]這種寫法。雖然這兩種類型是一樣的,但 // 後者更佳,並且都會使用後者。 var shoppingList: String[] = ["Egg", "Milk"] // 訪問和修改數組元素 println("The shopping list contains \(shoppingList.cout) items") // 判斷數組是否是空數組 if shoppingList.isEmpty { println("Empty array") } else { println("Non empty array") } // 追加元素 可以使用append方法 ,可以使用+= shoppingList.append("Flour") // 變成:["Egg", "Milk", "Flour"] shoppingList += "Baking Power" // 變成:["Egg", "Milk", "Flour", "Baking Power"] // 通過下標訪問元素 var firstItem = shoppingList[0] // Egg // 通過下標修改元素 shoppingList[0] = "Six eggs" // 把Egg變成了Six eggs // 通過範圍下標修改 shoppingList[1..3] = ["Egg", "Eggg"] // ["Egg", "Eggg", "Flour", "Baking Power"] shoppingList[1...3] = ["Egg", "Eggg", "Egggg"] // ["Egg", "Eggg", "Egggg", "Baking Power"] // 通過insert方法在指定下標插入元素 //變成:["InsertedValue", "Egg", "Eggg", "Egggg", "Baking Power"] shoppingList.insert("InsertedValue", atIndex: 0) // 通過removeAtIndex移除某個元素 // 執行後,變成: ["Egg", "Eggg", "Egggg", "Baking Power"] let removedObj = shoppingList.removeAtIndex(0) // 移除最後一個元素 // 方式一: var lastObj = shoppingList.removeLast() // 方式二: var lastObj = shoppingList.removeAtIndex(shoppingList.cout - 1) // 循環迭代數組 for item in shoppingList { println(item) } // 使用了全局函數enumerate for (index, value) in enumerate(shoppingList) { println("Item at index \(index + 1) is \(value)") } // 創建和初始化數組 var shomInts = Int[]() // 創建空數組,元素的個數為0 // 調用初始化器 var threeDoubles = Double[](cout: 3, repeatedValue: 0.0) // 通過類型自動推測,不用指定特定類型 var anotherThreeDoubles = Array(cout: 3, repeatedValue: 2.4) // 兩個數組相加,新數組的類型會根據這兩個數組的類型推斷出來 var sixDoubles = threeDoubles + anotherThreeDoubles /* 字典 字典是存儲多個相同類型值的容器。每個值都有一個與之關聯的唯一鍵作為該值在該字典中的唯一標識。 字典中的元素是無序的,與數組不同。當我們需要基於標識來查詢值時,我們會使用字典。Swift中的字典 中的鍵和值的類型必須是明確的,類型為:Dictionary<KeyType, ValueType>,其中KeyType就是鍵的類型, 而ValueType就是值的類型。對字典的鍵的唯一限製是這個KeyType必須是可哈希的類型。Swift中的所有基本 數據類型都是可哈希的,這些基本類型都可以作為字典的值。 */ // 創建空字典 var emptyDict = Dictionary<String, String>() // 初始化 var airports: Dictionary<String, String> = ["T": "Tokyo", "D": "Doubin"] // 如果初始化,可以不明確指明類型,可以自動根據初始值推測出來 var ariports = ["T": "Tokyo", "D": "Doubin"] // 訪問和修改字典元素 println("The dictionary of airports contains \(airports.cout) items") // 添加新鍵值對 ariports["L"] = "London" // 通過已經存在的鍵,修改對應的值 airports["L"] = "London Heathrow" // 可以通過updateValue(forKey:)添加或者修改元素 if let oldValue = airports.updateValue("Dubin Internation", forKey:"D") { println("The old value for D was \(oldValue)") } // 通過下標鍵獲取對應的值,返回的是一個Optional類型值,通過optional binding拆包 if let airportName = airports["D"] { println("The name of the airport is \(airportName)") } else { println("That airport is not in the airports dictionary") } // 通過下標鍵移除鍵值對,隻需要設置為nil airports["A"] = "Apple International" airport["A"] = nil // 移除 // 可以通過removeValueForKey移除 if let removeValue = airports.removeValueForKey("D") { println("The remove airport's name is \(removeValue)") } else { println("The airports dictionary does not contain a value for D") } // 通過鍵值對迭代字典 for (key, airportName) in airports { println("\(key): \(airportName)") } for key in airports.keys { println("Airport code: \(key)") } for airportName in airports.values { println("Airport name: \(airportName)") } // 把字典所有的值或者鍵存儲到數組中 let airportCodes = Array(airports.keys) let airportNames = Array(airport.values) // 創建空字典 var namesOfIntegers = Dictionary<Int, String>() namesOfIntegers[10] = "ten" // 有一個鍵值對 namesOfIntegers = [:] // 又變成空字典了,由於前麵已經指定過類型了,這裏可以重複不指定
最後更新:2017-04-03 07:57:05