昨天,我們深入探索了 字串(String),並了解到它的本質其實就是一個有序的「字元」集合。
這個「集合」的概念非常強大。但如果我們想存放的不是單一字元,而是一整個字串清單(例如所有待辦事項),或是一連串的數字(例如所有考試分數)呢?
這就是今天的主角—— 陣列(Array) 登場的時刻!陣列是 Swift 中最靈活、也最重要的集合型別,它讓我們能將任何同類型的資料整齊地收納在一個有序的容器中。準備好將你的資料管理能力提升到下一個層次吧!呀哈哈
var numbers: [Int] // 推薦簡潔寫法
var scores: Array<Int> // 另一寫法,功能相同
var nums = [Int]()
print(nums) // 印出 []
nums.append(100)
print(nums) // 印出 [100]
nums = []
print(nums) // 印出 []
var words: [String] = []
print(words) // 印出 []
var threeZeros = Array(repeating: 0, count: 3)
print(threeZeros) // 印出 [0, 0, 0]
var partA = [1, 2, 3]
var partB = [4, 5, 6]
var combinedArray = partA + partB
print(combinedArray) // 印出 [1, 2, 3, 4, 5, 6]
var shoppingList: [String] = ["Eggs", "Milk"]
var anotherList = ["Rice", "Apples"]
var groceryItems = ["Apples", "Eggs", "Milk", "Rice", "Water"]
print(groceryItems[2]) // 印出 Milk
groceryItems[2] = "Oranges"
print(groceryItems[2]) // 印出 Oranges
groceryItems[1...4] = ["Banana", "Cheese"]
print(groceryItems) // 印出 ["Apples", "Banana", "Cheese"]
注意:小心索引超出範圍 (Index out of range)!
陣列的索引是從0
開始的。如果你試圖存取一個不存在的索引,例如一個只有3
個元素的陣列,你卻想讀取array[3]
,你的 App 就會立刻閃退!
var letters = ["A", "B", "C"] // 索引是 0, 1, 2
// print(letters[3]) // 這行會導致閃退!因為索引 3 超出範圍了
這是使用陣列時最需要小心的陷阱。在存取特定索引前,最好先用
.count
屬性確保該索引是有效的
.count
: 返回陣列中值的數量(非負整數)。.isEmpty
: 檢查陣列是否為空(返回布林值)。var items = ["Keyboard", "Mouse", "Monitor"]
print("陣列中有 \(items.count) 個項目") // 陣列中有 3 個項目
items = []
print(items.isEmpty) // 印出 true
append(_:)
:在陣列末尾加入新值。insert(_:at:)
:在指定索引插入新值,後續元素自動後移。remove(at:)
:移除指定索引的元素,後續元素自動前移。removeLast()
:移除陣列最後一個元素。var todoList = ["寫程式", "運動"]
todoList.append("煮飯") // 加入新的值
todoList.insert("打掃", at: 0) // 在索引 0 加入新的值
let removedItem = todoList.remove(at: 1)
print("移除了:\(removedItem)") // 移除了:寫程式
let lastItem = todoList.removeLast()
print("最後一個被移除的項目是:\(lastItem)") // 最後一個被移除的項目是:煮飯
var students = ["Alice", "Bob", "Charlie", "David"]
for student in students {
print(student)
}
/* 輸出:
Alice
Bob
Charlie
David
*/
for (index, student) in students.enumerated() {
print("學生 \(index + 1): \(student)")
}
/* 輸出:
學生 1: Alice
學生 2: Bob
學生 3: Charlie
學生 4: David
*/
今天,你掌握了 Swift 中管理多筆資料的第一個核心工具:陣列(Array)!
你現在不僅知道如何建立一個有序的資料清單,更學會了如何像專家一樣隨心所欲地操作它——透過索引精準地存取與修改,並活用 append
和 remove
動態增刪項目。搭配 for-in
迴圈,你已經能有效管理任何有序的資料序列。
這是你踏入 Swift 資料結構世界的第一步,有了這個穩固的基礎,我們明天將探索更多樣的資料管理技巧!
陣列幫我們管理「有序」的清單,但如果我們只關心「有沒有」,而不在乎順序,甚至想自動過濾掉重複的項目呢?
明天,我們將認識 Swift 的另一個集合利器:集合(Set)!它不僅能高效處理唯一元素,更內建了強大的「數學超能力」。你將學會如何找出兩組資料的交集(共同點)、聯集(合併去重),甚至判斷它們的子集合關係。想知道如何輕鬆找出兩份名單的共同好友嗎?明天你就會學到!
敬請期待《Day 7|Swift:去重首選,Set 搞定!》