/**
可以把闭包想象成一个类的实例对象
内存在堆里
捕获的变量或常量就是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)