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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容