iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Mobile Development

IOS菜逼八連續30天挑戰系列 第 8

Day 8 Swift語法-進階篇(1/5)-Closures

今天講一下閉包,有關於閉包的用法:

宣告:

{(參數) -> 返回值 in
    //你要做的事情
}

閉包其實跟func很像,簡單說他就是一個沒有名字的function,而且閉包可以當作一個Value來傳遞,function則不行

func寫法:

func sayhello (){
    print("hello world")
}
sayhello()

閉包寫法:

let helloWorld = {(_ sayHello: String) -> String in
    return sayHello
}
print(helloWorld("hello world"))

結果如下:

捕獲值:這部分說明的是一個閉包,可以從程式碼裡的上文跟下文,捕獲已經被我們定義過的變數,即使被定義過的變數的原作用區域已經不存在,閉包依然可以在函數裡面修改這些值,例如:

func Example(Increment add: Int) -> () -> Int {
    var total = 0
    func increment() -> Int {
        total += add

        return total

    }
    return increment
}
let addTen = Example(Increment: 10)

addTen()

addTen()

addTen()

let addFive = Example(Increment: 7)

addFive()

addFive()

addFive()

執行後如下:


上一篇
Day 7 Swift語法-基礎篇(5/5)-Structures and Classes
下一篇
Day 9 Swift語法-進階篇(2/5)-Inheritance
系列文
IOS菜逼八連續30天挑戰30

尚未有邦友留言

立即登入留言