Swift编程:函数、闭包、变量与类型详解
1. 闭包相关特性
1.1 闭包设置捕获变量
闭包通过捕获其环境的能力所获得的强大功能超乎想象。若闭包捕获了对自身外部可设置变量的引用,它就能设置该变量。
以下是示例代码:
func pass100 (_ f:(Int) -> ()) {
f(100)
}
var x = 0
print(x)
func setX(newX:Int) {
x = newX
}
pass100(setX)
print(x)
在上述代码中,第一个 print(x) 输出为 0,而第二个 print(x) 输出为 100。这是因为传递给 pass100 的 setX 函数包含对 x 的引用,不仅包含,还捕获并设置了其值。
1.2 闭包保留其捕获的环境
当闭包捕获其环境时,即使其他部分不保留,它也会保留该环境。以下是一个修改函数的示例:
func countAdder(_ f: @escaping () -> ()) -> () -> () {
var ct = 0
return {
ct = ct + 1
print("count is \(ct)")
f()
超级会员免费看
订阅专栏 解锁全文
32

被折叠的 条评论
为什么被折叠?



