闭包
概念
2、类似OC中的block,或者c++中的lambdas表达式
3、函数是特殊的闭包表现形式:
a、全局函数是一个有名字但不会捕获任何值的闭包
c、闭包表达式是一个利用轻量级语法所写,可以捕获其上下文中变量或常量值的没有名字的闭包
一、表达式语法:
{(parameters)->returnType in statements}
例子:
参数类型推断:func sortFunc(a,b) -> Bool {return a > b}
参数名简写:arr6.sortInPlace{(
Trailing闭包:arr6.sortInPlace(<)//Trailing闭包
loop(arr6)
二、捕获(Capture):闭包可以在其定义的上下文中捕获常量或者变量,即使定义这些常量和变量的原作用域已经不存在,闭包依然可以在闭包函数体内引用和修改这些值
Swift最简单的闭包形式是嵌套函数,也就是定义在其他函数体内的函数。嵌套函数可以捕获其外部函数所有的参数以及定义的常量和变量
闭包的引用类型:无论您将函数/闭包赋值给一个常量还是变量,你实际上都是将常量/变量的值设置为对应函数/闭包的引用。
备注:
struct 值类型 copy
闭包 引用类型 传递的是地址 一份