//闭包类型
(a: Int, b:Int) -> Int //有参有返回值
() -> Int //无参有返回值
(a: Int) ->() //有参无返回值
() -> () //无参无返回值
/*
-swift 里边的闭包跟我们oc里的block 是非常的类似
- 是一个预先定义好的代码块
- 可以作为函数的参数传递,也可以是函数的返回值
- 在需要的时候调用‘()’
- 在使用self 的时候注意循环引用
闭包格式: 闭包名 = {(参数名:参数类型,..)-> 返回值类型 in 执行代码}
*/
//定义一个有参数有返回值的闭包
func demo9(num a: Int, num1 b: Int) ->Int {
//闭包
let closure = {(num a: Int, num1 b: Int) -> Int in
let m = a + b
return m
}
//调用
let result = closure(num: a, num1: b)
//函数的返回值
return result
}
//定义一个有参数有返回值的函数
func demo7(num a: Int, num1 b: Int){
func demo8(num a: Int, num2 b: Int)->Int {
print("aa = \(a + b)")
return a + b
}
let result = demo8(num: a, num2: b)
print("result =\(result)")
}
//定义一个有参数无返回值闭包
func demo5(){
let closure = {(num a: Int, num2 b: Int) in
print(a + b)
}
//调用闭包
closure(num: 2, num2: 3)
}
//定义个有参数无返回值函数
func demo3(num a: Int, num1 b: Int){
func demo4(num a: Int, num2 b: Int){
print(a + b)
}
demo4(num: a, num2: b)
}
//定义一个无参无返回值 的闭包
func demo2(){
//无参无反闭包
let closure = {
print("无参无返回值 不用in")
}
closure()
}
//定义无参无返回值 函数嵌套
func demo(){
func demo1(){
print("jaja")
}
//调用
demo1()
}