swift4 闭包

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 

你可能感兴趣的:(swift4 闭包)