Swift 闭包速查
基础语法
  { (parameters) -> (return type) in
    statements
  }
//闭包的函数整体部分由关键字 in 导入,这个关键字表示闭包的形式参数类型和返回类型定义已经完成,并且闭包的函数体即将开始。
例
reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in
    return s1 > s2
})
自动推测类型(省略参数)
reversedNames = names.sorted(by: { s1, s2 in
           return s1 > s2
} )
隐式返回
reversedNames = names.sorted(by: { s1, s2 in s1 > s2 } )
简写参数
reversedNames = names.sorted(by: { $0 > $1 } )
//$0 = s1,$1 = s2
尾随闭包
reversedNames = names.sorted() { $0 > $1 }
//只有唯一参数时可以省略括号
reversedNames = names.sorted{ $0 > $1 }
let strings = numbers.map { (number) -> String in
    var number = number
    var output = ""
    repeat {
        output = digitNames[number % 10]! + output
        number /= 10
    } while number > 0
    return output
}
func loadPicture(from server: Server, completion: (Picture) -> Void, onFailure: () -> Void) {
    if let picture = download("photo.jpg", from: server) {
        completion(picture)
    } else {
        onFailure()
    }
}
loadPicture(from: someServer) { picture in
    someView.currentPicture = picture
} onFailure: {
    print("Couldn't download the next picture.")
}
loadPicture(from: someServer) { picture in
    someView.currentPicture = picture
} onFailure: {
    print("Couldn't download the next picture.")
}
更多参考https://www.cnswift.org/closures
发表回复