iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
生成式 AI

Swift一下就會了系列 第 8

Day 8 Swift 語法基礎知識 7

  • 分享至 

  • xImage
  •  

閉包

Swift 中,閉包是一種可以在程式中儲存、傳遞的程式區塊,閉包可以捕捉和保存其所在範圍內的變數和常數。


閉包的基本語法

{ (參數) -> 回傳型別 in
    // 閉包的程式內容
}
  • in:分隔閉包的定義參數與回傳型別程式內容
  • 閉包沒有 func 或名稱
  • 可以省略型別與 return

簡單的閉包

let greeting = {
    print("Hello, Swift Closure!")
}
greeting() // 呼叫閉包,印出 Hello, Swift Closure!

這個閉包沒有參數與回傳值,直接用變數 greeting 儲存,並用 greeting() 呼叫。

帶參數與回傳值的閉包

let add: (Int, Int) -> Int = { (a, b) in
    return a + b
}
let result = add(3, 5) // result = 8

這個閉包接收兩個 Int 參數 ab,回傳它們的和。
呼叫 add(3,5) 得到 8


簡化語法

let names = ["Tom", "Alex", "Ben"]
let reversed = names.sorted { $0 > $1 }
print(reversed) // ["Tom", "Ben", "Alex"]

這個例子使用閉包作為 sorted 的排序條件,並且省略了參數型別,使用 $0$1 代表閉包的第一、第二個參數。單行表達式可省略 return


捕捉變數

func makeCounter() -> () -> Int {
    var count = 0
    let counter = {
        count += 1
        return count
    }
    return counter
}

let myCounter = makeCounter()
print(myCounter()) // 1
print(myCounter()) // 2
print(myCounter()) // 3

閉包會記住定義時的變數狀態。
myCounter 每次呼叫都會讓 count 增加 1,因為閉包捕捉並保存了 count 的值。


結語

閉包能夠讓程式碼更簡潔、靈活,無論是事件回呼、資料處理還是非同步操作,都少不了它的身影。

明天我們可以來看看在開始寫專案之前,還有哪些準備工作要做。


上一篇
Day 7 Swift 語法基礎知識 6
系列文
Swift一下就會了8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言