ios入门10_闭包

闭包有点像c++里面的表达式匿名函数之类的
1.字包含功能的代码块
类型
在这里插入图片描述
2.可以优化的地方
- 根据上下文推断参数和返回值类型
- 从单行表达式中隐式返回(闭包只有一行代码,可以省略return)
- 可以实用简化参数名,如$0,$1(从0开始,表示第i 个参数)
- 尾随闭包语法

3.闭包语法
(1) 接收参数并返回制定类型的闭包语法
{(parameters)->return type in
statements
}

//匿名函数
import Cocoa
let studname={print("swift 闭包")}
studname()//swift 闭包

(2) 闭包形式接收两个参数并返回布尔值
{(int,int)->bool in
statement1
statement2

}

import Cocoa
let devide={(val1:int,val2:int)->int in
	return val1/val2
	}
	let result=devide(200,20)
	print(result)//10

4.闭包表达式
格式

1.
func fun(a:type)->void{
//函数主题
}
2.
fun({
//闭包主体
})
3.fun(){
//闭包主体
}


之前
sorted(by:)

import Cocoa
let names=["AT","AE","D","S","BE"]
func backwards(s1:string,s2:string)->bool{
	return s1>s2
}
var reversed=names.sorted(by:backwaeds)//c++一致
print(reversed)//["S","D","BE","AT","AE"]

之后

import Cocoa
let names=["AT","AE","D","S","BE"]
var reversed=names.sorted(by:{$0>$1})//$0 $1 $2调用闭包的参数
//var reversed=names.sorted(by:>})
print(reversed)

再后尾随闭包

import Cocoa
let names=["AT","AE","D","S","BE"]
var reversed=names.sorted(){$0>$1}//$0 $1 $2调用闭包的参数
print(reversed)

5.捕获值
闭包可以再其定义的上下文中捕获常量或变量
嵌套函数也可以(之前遇到过)
即使定义这些常量和变量的原域已经不存在
捕获了a和total,会在闭包内部存续,多次调用计数器会增加
把闭包赋给了两个常量/变量,两个值指向的都是一个闭包

import Cocoa
func cal(out_t total: Int) -> () -> Int {
   var a= 0
   func decrementer() -> Int {
      a+= total
      return a
   }
   return decrementer
}
let decrem = cal(out_t: 30)
print(decrem())//30
print(decrem())//60
print(decrem())//90
let alsedecrem=cal(out_t:30)
print(alsedecrem())//120
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值