Swift小课

100 Days of Swift - Day 06 - 闭包(

2022-12-14  本文已影响0人  NieFeng1024

100 Days of Swift - Day 06 - 闭包Closures

6.1 闭包

let driving = {
    print("I'm driving in my car")
}
driving()

6.2 有参闭包

let driving = { (place: String) in
    print("I'm going to \(place) in my car")
}
driving("London")
// 有参函数
func pay(user: String, amount: Int) {
    // code
}

// 有参闭包
let payment = { (user: String, amount: Int) in
    // code
}

6.3 有返回值闭包

let drivingWithReturn = { (place: String) -> String in
    return "I'm going to \(place) in my car"
}
let message = drivingWithReturn("London")
print(message)
// 有参闭包返回数据
let payment = { (user: String) -> Bool in
    print("Paying \(user)…")
    return true
}
// 无参闭包返回数据
let payment = { () -> Bool in
    print("Paying an anonymous person…")
    return true
}

6.4 闭包作为参数

// 定义一个闭包
let driving = {
    print("I'm driving in my car")
}
// 定义一个有参函数,函数参数为闭包
func travel(action: () -> Void) {
    print("I'm getting ready to go.")
    action()
    print("I arrived!")
}
// 调用函数,传入闭包作为参数
travel(action: driving)
函数体为一个任务A,参数闭包为耗时任务B,任务B需要在A任务之后执行,然后返回数据.

6.5 尾随闭包

// 函数最后一个参数是闭包类型
func travel(action: () -> Void) {
    print("I'm getting ready to go.")
    action()
    print("I arrived!")
}
// 调用函数
travel() {
    print("I'm driving in my car")
}
// 简写尾随闭包
travel {
    print("I'm driving in my car")
}
// 函数有多个参数,最后一个参数是闭包类型
func animate(duration: Double, animations: () -> Void) {
    print("Starting a \(duration) second animation…")
    animations()
}
// 正常写法
 animate(duration: 3, animations: {
    print("Fade out the image")
})
// 尾随闭包简写
animate(duration: 3) {
    print("Fade out the image")
}

声明:本文创作来自hackingwithswift

上一篇 下一篇

猜你喜欢

热点阅读