iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0

今天我們將介紹 Swift 中兩個非常重要的概念:閉包(Closures) 和 列舉(Enumerations, Enum)。這些語法結構在 Swift 程式開發中有著廣泛的應用,熟練掌握它們可以大大提升我們的程式效率和可讀性

閉包

  • 閉包的基本形式和簡單例子
  • 閉包的應用
    以下是閉包的基本形式
{ (參數) -> 返回類型 in
    // 閉包主體
}

然後我們再來看一個簡單的例子

let greeting = { (name: String) -> String in
    return "Hello, \(name)!"
}

let message = greeting("Alice")
print(message)  // 輸出: Hello, Alice!

有了上面的基本形式,我們就可以很好的讀懂這個閉包在幹嘛了吧~

閉包的應用

閉包在swift有許多的用法,例如排序,以下有個簡單的例子給大家參考

let numbers = [10, 20, 5, 15]
let sortedNumbers = numbers.sorted { $0 > $1 }
print(sortedNumbers)  // 輸出: [20, 15, 10, 5]

我來解釋一下這段程式是在幹嘛的,我們先宣告一個numbers,並使用sorted對numbers做排序,在閉包內,s0 > s1就是前面的元素比後面的元素大,就會交換位置,這樣就完成我們的排序了,最後print出來。

列舉

  • 列舉的基本形式和簡單例子
  • 原始值與關聯值
  • 列舉的應用

列舉的基本形式和簡單例子

以下是一個基本的例子

enum CompassPoint {
    case north
    case south
    case east
    case west
}

var direction = CompassPoint.north
direction = .east  // 可以省略枚舉類型

原始值與關聯值

原始值

enum Planet: Int {
    case mercury = 1
    case venus
    case earth
    case mars
}

let earth = Planet.earth.rawValue  // 輸出: 3

我們先定義了mercury = 1,然後我們let earth為planet.earth.rawValue就是earth為第三個,所以就會輸出3
關聯值可以讓每個列舉儲存不同的資料形態

enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
}

var productBarcode = Barcode.upc(8, 85909, 51226, 3)
productBarcode = .qrCode("ABCDEFGHIJ")

上面我們先定義了一個列舉
首先var productBarcode = Barcode.upc(8, 85909, 51226, 3)給它值,
後來productBarcode = .qrCode("ABCDEFGHIJ"),所以後面的qrcode會取代掉原本upc的值

列舉的應用

列舉在 Swift 開發中有廣泛的應用,如處理狀態機、網絡請求狀態、定義常量集等。以下是一個應用列舉管理網絡請求結果的例子:

enum Result<T> {
    case success(T)
    case failure(Error)
}

func fetchData(completion: (Result<String>) -> Void) {
    // 模擬網絡請求
    let isSuccess = true
    if isSuccess {
        completion(.success("Data fetched successfully"))
    } else {
        completion(.failure(NSError(domain: "Error", code: 404, userInfo: nil)))
    }
}

fetchData { result in
    switch result {
    case .success(let data):
        print(data)
    case .failure(let error):
        print("Error: \(error)")
    }
}

結論

閉包和列舉是 Swift 語法中極具重要的工具。閉包讓我們能夠更靈活地處理代碼塊和異步操作,而列舉則讓我們可以更有結構地管理相關的值和狀態。在 Swift 的日常開發中,靈活運用這兩者將使我們的代碼更具可讀性和可維護性。明天我們將繼續探索更多 Swift 語法和功能,讓我們一起持續精進!


上一篇
swift for、while、函式介紹
下一篇
swift內建的高階函式(1)
系列文
Swift大航道-啟航篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言