swift 闭包(closure)

闭包:就是一个函数和它所捕获的变量/常量环境组合起来,称为闭包。
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))