複合值 compound

複合值 compound

使用[]建立陣列(array)和字典(dictionary)

【集合型別】Collection Types

Swift 提供了三種主要的集合型別,稱為陣列(array)集合(set)字典(dictionary),用於儲存值的集合。

  • 陣列是值的 “有序集合” 。
  • 集合(set)是唯一值的 “無序集合” 《unordered collections》(單一的集合中,值不會重複)。
  • 字典是 “鍵值關聯”(key-value associations)的無序集合。

宣告並建立陣列

此陣列型別為[String]

var shoppingList = ["catfish", "water", "tulips"]

以陣列的索引值配合[ ]來讀取陣列中的個別元素值

print(shoppingList)		// "["catfish", "water", "tulips"]\n"
shoppingList[0]		// "catfish"
shoppingList[1]		// "water"
shoppingList[2]		// "tulips"
shoppingList[2]+shoppingList[1]		// "tulipswater"

以指定的索引值來”修改”特定元素的值

shoppingList[1] = "bottle of water

列印陣列的全部內容(僅限debug使用)

print(shoppingList)		// ["catfish", "bottle of water", "tulips"]

取得陣列中元素的總個數

shoppingList.count

在指定的索引值位置(參數二)插入一個新的陣列元素

shoppingList.insert("Test", at: 1)		
// ["catfish", "Test", "bottle of water", "tulips"]

在指定的索引值位置(參數二)插入一個新的陣列(有序的集合sequence

shoppingList.insert(contentsOf: ["xzy","qqq"], at: 2)		
// ["catfish", "Test", "xzy", "qqq", "bottle of water", "tulips"]

在陣列的”最後位置”加上一個新的陣列元素

shoppingList.append("123")		
// ["catfish", "Test", "xzy", "qqq", "bottle of water", "tulips", "123"]

在陣列的最後位置加上一個新的陣列(有序的集合sequence)

shoppingList.append(contentsOf: ["abc","def"])		
// ["catfish", "Test", "xzy", "qqq", "bottle of water", "tulips", "123", "abc", "def"]

shoppingList.count		// 9

shoppingList.count
shoppingList

刪除陣列中指定索引值的元素

shoppingList.remove(at: 3)		// "qqq"

移除陣列中的第一個元素

shoppingList.removeFirst()		// "catfish"
shoppingList		// ["Test", "xzy", "bottle of water", "tulips", "123", "abc", "def"]

移除陣列中的最後一個元素

shoppingList.removeLast()	// "def"
shoppingList		// ["Test", "xzy", "bottle of water", "tulips", "123", "abc"]

以下兩個語法都可以將整個陣列清空

shoppingList.removeAll()		//[]
shoppingList = []		// []

宣告並建立字典,此字典型別為[String:String]

“key” : “value”

var occupations = [
    "Malcolm": "Captain",
    "Kaylee": "Mechanic",       
]
//最後一筆資料的逗點可以保留(包含陣列)

以字典的key(鍵)來查詢value(值)

occupations["Malcolm"]		// "Captain"

如果查詢的key不存在會回報空值(nil/null)

occupations["abc"]		// nil

查詢字典會拿到選擇值,不論是否有查到資料

let oc1 = occupations["Malcolm"]		// "Captain"
oc1?.hasPrefix("Ma")		// Optional(false)

當key查不到值時,以下的串連呼叫執行動作會直接被忽略

occupations["abc"]?.hasSuffix("xy")		// nil

取得字典中元素的總個數

occupations.count		// 3

當key存在時,設定其值會在字典中”修改”一組『鍵值配對』的值

occupations		// ["Kaylee": "Mechanic", "Jayne": "Public Relations", "Malcolm": "Captain"]
occupations["Kaylee"] = "Engineer"		// "Engineer"
occupations		// ["Kaylee": "Engineer", "Jayne": "Public Relations", "Malcolm": "Captain"]

刪除字典中的一組鍵值配對(key-value pair)

occupations.removeValue(forKey: "Jayne")  // "Public Relations"
occupations. // ["Kaylee": "Engineer", "Malcolm": "Captain"]

以下兩個語法都可以將整個字典清空

occupations.removeAll()
occupations = [:]
  • 集合型別的雜湊值(Hash Values for Set Types)一個型別必須是可以雜湊的,才能夠儲存在集合(set)當中。

  • A type must be hashable in order to be stored in a set

  • Swift 的所有基礎型別(例如String、Int、Double和Bool)預設情況下都是可以雜湊的,可以用來作為集合型別的值(set value types)或字典key的型別(dictionary key types)。

  • All of Swift’s basic types (such as String, Int, Double, and Bool) are hashable by default, and can be used as set value types or dictionary key types.

  • 雜湊(英語:Hashing)是電腦科學中一種對資料的處理方法,通過某種特定的函式/演算法(稱為雜湊函式/演算法)將要檢索的項目與用來檢索的索引(稱為雜湊,或者雜湊值)關聯起來,生成一種便於搜尋的資料結構(稱為雜湊表)。