1. 定义函数传入闭包
/// 加载数据
/// - Parameter finished: 完成回调
/// 行参接收的值是 demo 函数的地址
func loadData(finished:(_ text: String) -> Int){
//text 参数,通常是异步任务完成传递“结果”
//执行闭包 -> 通过函数地址运行
//finished 是指向 demo 的地址
let age = finished("wang er")
if(age > 30){
print("Max " + String(age))
}else{
print("Min " + String(age))
}
}
2. 定义函数实现闭包
/**
1.函数名是指向代码区的指针地址
2.如果要执行函数,通过函数地址,找到第一句代码行
3. 闭包 提前准备好的代码,在需要的时候执行
*/
func demo(name: String) -> Int {
print("hello " + name)
//根据姓名返回年龄
if name == "wang er"{
return 32
}else{
return 18
}
}
3. 两种测试方法
3.1 调用函数中传函数
//loadData 的参数,是一个 demo 函数的首地址
loadData(finished: demo)
3.2 直接实现
loadData { text -> Int in
print("hello " + text)
//根据姓名返回年龄
if text == "wang er"{
return 16
}else{
return 18
}
}