1. 程式人生 > >Swift 筆記 (四) —— 集合類型

Swift 筆記 (四) —— 集合類型

move 變量 accep 混雜 isempty style nim 推斷 集合類

集合類型 Swift 提供了兩種集合類型, Array, Dictionary Array與Dictionary 都須要存同樣類型的數據 //實際測試的時候發現能夠混雜類型,以下有樣例 Array 是有序的, Dictionary 是無序的 Dictionary須要一組無唯一的索引用於查找,也就是key
Array 原型: Array<SomeType>, SomeType指的是要放在Array裏的數據類型
var myArray: String[] = [“var1”, “var2”, “var3”] 能夠簡寫為: var myArray = [“var1”, “var2”, “var3”]
假設給定了Array的類型的話。那麽Array裏就僅僅能存一種特定的類型,但假設是簡寫的形式的話。混雜的數據類型居然也能夠!

到眼下為止,官方的文檔上還沒有提及這樣的特性: var myArray = [“string1”, 1, 2] //xcode是能夠顯示出來正確的結果的。可能興許章節有介紹吧
還能夠初始化一個空Array var myInts = Int[]()
或者把全部值初始為同樣的值 var myDouble = Double[](count:3, repeatedValue: 0.0)
方法 cout (取得Array中的元素個數) count (取得Array中的元素個數)(感謝 swift技術交流第一平臺(355277)的群友 夕顏(1651150754) 指出錯別字 )


myArray.count
isEmpty (Bool型返回值, 用於推斷Array是不是空的) myArray.isEmpty
append (給Array追加元素,在最後) myArray.append(“hello”)
+= (這個類型append。可是更牛,能夠把兩個Array連起來) //感謝Swift蘋果超級群(191026105)的群友Shawn·Shoper(369201170)指正 += (這個類似append,可是更牛,能夠把兩個Array連起來)

myArray += “world” myArray += [“hello”, “kitty"] myArray += myArray 但要註意的是,剛才我們創建的“混雜數據類型“的myArry,就是那個 [“string1", 1, 2] 是不能夠這樣操作的,編輯器會報錯:Could not find an overload for “+=“ that accepts the supplied arguments

insert(atIndex:) (在指定下標插入元素) myArray.insert(“need”, atIndex: 0) //這是延續了objective-c的寫法吧 在一個越界的下標位置插入是不被同意的,由於Array是連續的
removeAtIndex(index:) (刪除指定下標位置的元素) myArray.removeAtIndex(0)
removeLast (刪除最後一個元素) myArray.removeLast()
removeAll(keepCapacity:) (刪除全部元素) myArray.removeAll(keepCapacity: false)
刪除全部元素還有個辦法: myArray = [] //顯然這樣的方法非常好用。可是和removeAll比,哪個快,就須要在程序裏測了
下標語法 (subscript syntax) var myFirstItem = myArray[0] //下標從0開始
還能夠用範圍型下標。

。。好雷: myArray[2…3] = [“china”, “shanghai”] 值得註意的是。這裏用了...也就是下標為 2,3,4,而賦值的數量卻能夠不同,這裏有兩種情況須要說明: 1. 下標數多於新值數 :非常好解釋。多了的扔掉 2. 下標數少於新值數: 非常奇妙。這個數組會在多出來的值的地方,在給定的最大下標處開始插入。而原本在後面的值,會往後移
當然,這裏都是指變量數組。而不是常量數組
越界 越界依舊會崩潰…這個就不多說了
遍例 1. for-in for item in myArray { println(item) }
2. enumerate 這是個全局的函數 for (index, value) in enumerate(myArray) { println (“item \(index +1): \(value)”) }
Dictionary key要唯一, 假設對一個已經有的key操作,會改掉原值 與 NSDictionary和 NSMutableDictionary不同的是,Dictionary能夠使用不論什麽對象做為key和value
原型: Dictionary<KeyType, ValueType> //依據官方文檔的描寫敘述,能夠知道Dictionary就是個哈稀表 全部Swift的基本數據類型。String, Int, Double, Bool 全都能夠做為key
與Array類似的初始化方法: var myDictionary: Dictionary<String, String> = [“china”: “panda”, “australia”:”kangaroo"]
因為Swift能夠依據數值去推斷數據類型,所以Dictionary一樣能夠不用指定類型初始化: var myDictionary = [“china”: “panda”, “australia”:”kangaroo”]
與Array類似。也能夠創建一個空的Dictionary: var myDictionary = Dictionary<String, String>()
清空Dictionary裏的元素: myDictionary = [:] //註意這裏的冒號
方法 count (取得Dictionary中的key-value對的數量) myDictionary.count
updateValue(forKey:) (改某一個key的值) myDictionary.updateValue(“duckbill”, forKey:”australia")
也能夠寫成 myDictionary[“australia”] = “duckbill"
遍例 for-in for (country, animal) in myDictionary { println(“counter: \(country) , animal: \(animal)”) }
也能夠單獨遍例key for country in myDictionary.keys {…}
單獨遍例value for animal in myDictionary.values {…}
也能夠把key 或者 value拿出來創建一個Array var myKeyArray = Array(myDictionary.keys) var myValueArray = Array(myDictionary.values)
定長與不定長 官方文檔上叫 mutable 和 immutable (可變,不可變) 我認為這裏隱藏一條信息: 並非元素不可改,而是長度不可變,比方 let myArray = [1,2,3] //這個Array 就僅僅能有3個元素,不能多也不能少,但能夠改變裏面的值 let myDictionary = [1:”1”, 2:”2”] //類似Array

Swift 筆記 (四) —— 集合類型