swift 那些事儿 自动闭包

自动闭包就是将一个非闭包形式的表达参数 自动转化为闭包的表达形式并且传给一个普通函数表达形式。

//声明一个数组
var nameArray = ["li","yuan","long","is"]

//函数声明 参数是一个普通闭包类型 (该闭包没有参数有返回值String类型)
func removeName(nameIndex:()->String){
    //输出语句中,调用了自身参数即闭包,此时闭包才会被执行
    print("nameArray first name is \(nameIndex())")
}

//函数调用。参数传入一个定义好的闭包 该闭包的功能是删除数组中第一个元素
removeName(nameIndex: {()->String in return nameArray.remove(at: 0)})
//removeName(nameIndex: {()->String in nameArray.remove(at: 0)})

//尾随闭包的写法
//removeName(){()->String in nameArray.remove(at: 0)}
//removeName(){nameArray.remove(at: 0)}
//上记输出是nameArray first name is li 因为 闭包在执行前 调用的输出语句因此数组中的元素未来的删除



//函数声明 参数是一个自动闭包 
func removeNameAuto(nameIndex: @autoclosure ()->String){
    print("auto ameArray first name is \(nameIndex())")
}
//函数调用并传入一个普通的表达式,因为是自动的闭包,会将该普通的表达式自动转化为闭包传入。
removeNameAuto(nameIndex: nameArray.rem
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值