闭包

/**
 可以把闭包想象成一个类的实例对象
 内存在堆里
 捕获的变量或常量就是u对象的成员(存储属性)
 组成闭包的函数就是类内部定义的方法


 闭包表达式:
 {
  (v1:Int,v2:Int) -> Int in
  return v1 + v2
 }
 */

typealias Fn = (Int) -> Int
func getFn() -> Fn {
    // 局部变量
    var num = 0
    func plus(_ i:Int) -> Int {
        num += i
        return num
    }
    return plus
} // 返回的plus和num形成了闭包

var fn1 = getFn()
print(fn1(1))

var fn2 = getFn()
print(fn2(2))
print(fn2(3))

//func getFn() -> Fn {
//    // 局部变量
//    var num = 0
//    return {num + $0
//        return num
//    }
//}

class Closure {
    var num = 0
    func plus(_ i:Int) -> Int {
        num += i
        return num
    }
}

var cs1 = Closure()
var cs2 = Closure()
cs1.plus(1)

cs2.plus(2)
cs2.plus(3)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值