Swift 程式語言 — 集合類型(1) — 基本概念 & Array
讓我們來認識一下集合類型基本概念以及集合類型中的有序集合類型 — Arrays。
前言:
在 Swift 中有三個強大的集合類型(Collection Type),分別是 Array
、Set
以及 Dictionary
,其中每個類型的特性都不太相同,但是他們各自都有各自強大的地方以及優點,這篇教學就帶大家來探索一下三種集合類型的特性。
⎮ 關於集合類型
Swift 提供了三種主要的集合類型,用來存儲值的集合。其中 Array
是有序的值集合,Set
是唯一值的無序集合,Dictionary
是 key-value
關聯的集合。
在 Swift 中 Array
、Set
以及 Dictionary
總是清楚他們可以儲存的值和 key
的類型,這意味著你無法錯誤的將錯誤類型的值插入到集合中。
● 集合的可變性
如果你創建 Array
、Set
或是 Dictionary
並且將它賦給變數,那麼這個被創建的集合是可變的。這表示著你可以透過新增、刪除、修改集合中的項目。如果將 Array
、Set
或是 Dictionary
賦給常數,那麼該集合內容是無法變動的。
在集合不需要變更的情況下,最好創建無法變動的集合。這樣做能夠使你更容易去理解你的程式碼,並且使 Swift 編譯器能夠優化期性能。
⎮ Arrays
Array
在有順序的清單中儲存相同類型的值,相同的值可以在 Array
中出現在不同的位置。
● 創建一個空的 Array
你可以透過以下三種方式創建一個空的 Array
,但是最推薦使用第一種簡寫方式:
// someInts 其元素類型為 Int,類型為[Int]
let someInts = [Int]()// someDoubles 其元素類型為 Double,類型為[Double]
let someDoubles: [Double] = []// someStrings 其元素類型為 String,類型為[String]
let someStrings: Array<String> = []// someFloats 其元素類型為 Float,類型為[Float]
let someFloats = Array<Float>()
你可以在創建可變的 Array
後,透過賦予一個 []
空的 Array
,使其變成空的 Array
:
請注意!空的 Array 其類型依然跟創建時相同,不會改變。
我們可以透過 Array
中的 count
屬性來查看 Array
中包含幾個元素:
我們還可以使用 Array
中的 isEmpty
屬性來查看是否為空的 Array
:
● 創建帶有默認值的 Array
你也能在一開始提供默認值來創建 Array
,如同前面所說的 Swift 會藉由類型推斷來判斷它的類型。
// 類型為 [Int]
let someInts = [1, 2, 3, 4, 5]// 類型為 [String]
let someStrings = ["aaa", "bbb", "ccc"]
你還能使用 Array 中的初始化方法 (repeating:, count:)
來產生重複的元素的 Array
:
● 連接不同的 Array
你可以透過加號 +
來將兩個相同類型的數組相加來創建新的 Array
。新的 Array
的類型將會從兩個結合後的 Array
的類型推斷出來。
● 訪問以及修改 Array
- 訪問 Array 中元素:
因為 Array
是一組有順序的集合類型,所以我們可以透過索引(index)來在 Array
中找出它,記得所有索引都是從 0 開始的。假設我們今天有一個購物清單的 Array
:
var shoppingList = ["牛奶", "麵包", "吐司"]
那我們就能透過其在 Array
中的位置來找出它:
當我們訪問超過 Array
的範圍時,Swift 編譯器會告訴你該索引超出範圍,顯示 Fatal error: Index out of range
,在一個 Array 中最大可訪問的索引是該 Array.count — 1
或是 endIndex — 1
。
我們可以透過輸入一個範圍,來訪問多個對象,例如:下方我們使用的 0…shoppingList.count
的意思就是訪問從「0 ~ shoppingList 總數的前一個 index
」的意思:
你也能透過這種方式來修改 Array
中該索引的值:
我們也能夠像上面一樣,同時修改一個範圍內的值:
- 新增
Array
元素:
在 Array
中我們可以使用 append
來將一個符合該 Array
類型的元素加到 Array
的最後面:
- 插入
Array
元素:
在 Array
中我們可以使用 insert(,at:)
來將一個符合該 Array
類型的元素插入到 Array
中的索引位置:
- 刪除
Array
元素:
在 Array
中我們可以使用 remove(at:)
來刪除 Array
中該索引的元素:
我們也可以透過 removeFirst()
刪除 Array 中第一個元素,使用 removeLast()
來刪除最後一個元素。
- 遍歷
Array
元素
我們可以使用 for-in
迴圈來遍歷整個 Array
中的元素:
如果你需要每個 Array
中的索引以及其值,請使用 enumerated()
方法迭代 Array
。對於 Array
中的每個項目,enumerated()
方法來返回由整數和項目組成的元組。這時你就會發現你可以從項目中找到 offect
以及 element
兩種屬性:
當然我們也能使用一個透過元組一個元組,來將它賦予在不同的內容上:
後記:
那麼本次的教學就到這邊結束了,下面一篇文章我們會來介紹剩下的兩種無序的集合類型 Set 以及 Dictionary。希望透過這篇文章各位了解到 Array
的概念,以及如何對它的內容進行操作,當然可能還有我沒有介紹到的屬性或是方法,就等著各位去了解了 😏