闭包
闭包:把函数用作类型
闭包形式1:作为函数返回值
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 func bibao() ->((Int) ->Int) { 2 var x = 10 3 func returnbibao(integer:Int) ->Int { 4 return x + integer 5 } 6 return returnbibao 7 } 8 var funcVar = bibao() 9 print(funcVar(7))
第一行代码中:(Int)这里是3.0的语法(即Int加括号),表示作为函数返回值的闭包函数的形参(就是函数形参);然后整个函数中返回returnbibao与(Int) ->Int组合成为函数签名(函数头部)。
闭包形式2:作为函数形参类型
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 func bibao(canShuBiBao:() ->Bool) ->Bool { 2 if canShuBiBao() { 3 return true 4 } 5 return false 6 } 7 func CanShuBiBao() ->Bool { 8 return true//改变这个值,输出变化 9 } 10 print(bibao(canShuBiBao:CanShuBiBao))
第二个函数作为闭包函数,用作形参类型;第一个函数调用时,必须带上——形参名:形参类型。
此外,{}将创建一个匿名闭包。如:{return $0+$1}("hello","world")
数组的各种方法:for _ in arrays where 条件、filter、map、reduce。