swift 闭包
闭包:
swift 中 函数是闭包的一种类似于oc的闭包
闭包表达式(匿名函数) -- 能够捕获上下文中的值
一般形式:{
(parameters) -> returnType in
statements
}
let say:(String) -> Void = {
(name : String) -> Void in
print("\(name)" + "hahahh")
}
调用
say("hello")
对于自动闭包 是一种自动创建的闭包,封装了一堆表达式在自动闭包中
在开发中经常使用到的是逃逸闭包 逃逸闭包会在闭包的前面加上@escaping 这个是在swift3之后才加入的,一般函数在闭包内涉及操作那么闭包就必须是逃逸闭包,为了异步操作的捕获
func getIncFunc(inc: Int) -> (Int) -> Int
{
var max = 10
func incFunc(x: Int) ->Int{
print("incFunc函数结束")
max += 1
return max + x
}
// 当执行到这一句时inc参数就应该被释放了, 但是由于在内部函数中使用到了它, 所以它被捕获了;
// 同理, 当执行完这一句时max变量就被释放了, 但是由于在内部函数中使用到了它, 所以它被捕获了.
print("getIncFunc函数结束")
return incFunc
}
调用
let incFunc = getIncFunc(inc: 5)
print(incFunc(6))
值为17