6.7 Swift闭包捕获值
2016-12-17 11:02
281 查看
/**
闭包的捕获值
也就是闭包可以捕获上下文中的值
*/
let incFunc1 =
getInFunc(inc: 3)
print(incFunc1)
print("------------------>")
print(incFunc1(10))
let incFunc2 =
getInFunc2(inc: 3)
print("------------------>")
print(incFunc2(10))
print(incFunc2(10))
/**
v==10
inc==3
mt==11
24
v==10
inc==3
mt==12 // 它记住了上次的值11,
并不是说又变成10
25
*/
// 返回的是一个闭包 (Int) -> Int
func getInFunc(inc:Int) -> ( (Int) ->
Int ) {
func incFunc(v:
Int) -> Int {
print("v==\(v)")
print("inc==\(inc)")
// inc在函数中生命周期结束了,但是可以捕获 inc的
值
return inc + v
}
return
incFunc
}
// 返回的是一个闭包 (Int) -> Int
func getInFunc2(inc:Int) -> ( (Int) ->
Int ) {
var mt =
10
func incFunc(v:
Int) -> Int {
mt = mt + 1
print("v==\(v)")
print("inc==\(inc)")
print("mt==\(mt)")
// inc, mt
在函数中生命周期结束了,但是可以捕获 inc, mt的
值
return inc + v + mt
}
return
incFunc
}
闭包的捕获值
也就是闭包可以捕获上下文中的值
*/
let incFunc1 =
getInFunc(inc: 3)
print(incFunc1)
print("------------------>")
print(incFunc1(10))
let incFunc2 =
getInFunc2(inc: 3)
print("------------------>")
print(incFunc2(10))
print(incFunc2(10))
/**
v==10
inc==3
mt==11
24
v==10
inc==3
mt==12 // 它记住了上次的值11,
并不是说又变成10
25
*/
// 返回的是一个闭包 (Int) -> Int
func getInFunc(inc:Int) -> ( (Int) ->
Int ) {
func incFunc(v:
Int) -> Int {
print("v==\(v)")
print("inc==\(inc)")
// inc在函数中生命周期结束了,但是可以捕获 inc的
值
return inc + v
}
return
incFunc
}
// 返回的是一个闭包 (Int) -> Int
func getInFunc2(inc:Int) -> ( (Int) ->
Int ) {
var mt =
10
func incFunc(v:
Int) -> Int {
mt = mt + 1
print("v==\(v)")
print("inc==\(inc)")
print("mt==\(mt)")
// inc, mt
在函数中生命周期结束了,但是可以捕获 inc, mt的
值
return inc + v + mt
}
return
incFunc
}
相关文章推荐
- 二十一 Swift3.0之 闭包捕获值
- Swift的闭包(二):捕获值
- swift闭包的值捕获
- Swift基础语法: 23 - Swift的Trailing闭包, 捕获, 闭包是引用类型
- Swift-函数式编程、捕获、闭包内存管理
- Swift的学习(Closures(闭包))
- 对swift中的Optional和闭包的理解
- Swift:闭包
- Swift 闭包的使用
- Swift利用闭包(closure)来实现传值-->前后两个控制器的反向传值
- swift之闭包(closure)
- swift闭包学习
- 浅谈swift中的函数类型和闭包
- Swift学习之十四:闭包(Closures)
- Swift闭包的简化写法——强大的Swift闭包
- Swift利用闭包(closure)来实现传值-->前后两个控制器的反向传值
- 浅学swift中的闭包
- Swift中闭包实现OC的block传值
- 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包
- Swift中闭包,懒加载,单例的写法区别