美文网首页
swift 闭包(closure)

swift 闭包(closure)

作者: hank009 | 来源:发表于2020-12-29 17:37 被阅读0次

    闭包:就是一个函数和它所捕获的变量/常量环境组合起来,称为闭包。
    1.一般定义在函数内部的函数。
    2.一般它捕获的是外层函数的局部变量/常量。

    可以把闭包想像成是一个类的实例对象。
    1.内存在堆空间。
    2.捕获的局部变量/常量就是对象的成员(存储属性)。
    3.组成闭包的函数就是类内部定义的方法。

    typealias Fn = (Int) -> Int
    func getFn() -> Fn {
         var num = 0
         func plus(_ i: Int) -> Int {
              num += i
              return num
        }
       return plus
    }
    
    func getFn() -> Fn {
       var num = 0
      return {
          num += $0
         return num
       }
    }
    
    var fn1 = getFn()
    var fn2 = getFn()
    fn1(1)  // 1
    fn2(2)  // 2
    fn1(3)  // 4
    fn2(4)  // 6
    fn1(5)  // 9
    fn2(6)  // 12
    
    class Closure {
       var num = 0
      func plus(_ i: Int) -> Int {
          num += I
         return num
       }
    }
    
    var cs1 = Closure()
    var cs2 = Closure()
    cs1.plus(1)   // 1
    cs2.plus(2)   // 2
    cs1.plus(3)   // 4
    cs2.plus(4)   // 6
    cs1.plus(5)   // 9
    cs2.plus(6)   // 12
    

    相关文章

      网友评论

          本文标题:swift 闭包(closure)

          本文链接:https://www.haomeiwen.com/subject/xocqoktx.html