@noescape @escaping @autoclosure
原帖地址:http://www.52php.cn/article/p-heffjixu-c.html @noescape 非逃逸闭包 @escaping 逃逸闭包 @autoclosure 自动闭包 //(a)自动闭包演示
var students = ["A","B","C"]
let studentsProvider = { students.remove(at: 0) } //自动闭包自动将表达式封装成闭包
studentsProvider()
//(b)自动闭包演示
var list = [1,2,3,4,5,6]
//创建一个显式闭包
let closures = {
list.append(7)
}
print(list) //将打印[1,2,3,4,5,6]
closures()
print(list) //引用传递,将打印[1,6,7]
func func1(closure: ()->Void) -> Void {
//执行显式的闭包
closures()
}
func func2(auto: @autoclosure ()->Void) -> Void {
//执行自动闭包
auto()
}
//显式闭包
func1(closure: closures)
print(list) //将打印[1,7,7]
//将表达式自动生成闭包
func2(auto: list.append(8))
print(list) //将打印[1,8]
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |