Swift - 自动闭包
2022-03-15 本文已影响0人
aven_kang
func getFirstPostive(_ v1:Int, _ v2: @autoclosure ()->Int) -> Int {
return v1 > 0 ? v1:v2()
}
func getFirstPostive(_ v1:Int, _ v2: ()->Int) -> Int {
return v1 > 0 ? v1:v2()
}
在上面定义了两个方法,v2 返回的都是一个函数,也算一个闭包,但是第一个多了autoclosure这个修饰
我们看看调用的时候,两者有什么区别
getFirstPostive(10, 20). // 带autoclosure修饰的
getFirstPostive(10) { // 不带autoclosure修饰的
return 10;
}
两个对比起来,我们大概可以知道,Swift在使用autoclsure的时候,自动为函数生成了闭包表达式,也是就是本来可以这么写的
getFirstPostive(10, {20})
现在可以改成
getFirstPostive(10, 20). // 带autoclosure修饰的
自动为我们生成了语法糖
截屏2022-02-19 下午2.22.26.png