SwiftUI 内功教程之Closures 09 闭包捕捉价值Capturing Values及经典用法
什么是闭包
闭包是独立的功能块,可以在代码中传递和使用。Swift中的闭包类似于C和Objective-C中的块以及其他编程语言中的lambda。闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。这称为关闭这些常量和变量。Swift为您处理捕获的所有内存管理.
闭包可以从定义它的周围环境中捕获常量和变量
闭包可以从定义它的周围环境中捕获常量和变量。然后,闭包可以从其主体内部引用和修改这些常量和变量的值,即使定义常量和变量的原始范围不再存在。
在Swift中,最简单的可以捕获值的闭包形式是嵌套函数,它写在另一个函数的主体内。嵌套函数可以捕获其外部函数的任何自变量,还可以捕获在外部函数内定义的任何常量和变量。
这是一个名为的函数的示例makeIncrementer,其中包含一个名为的嵌套函数incrementer。嵌套incrementer()函数从其周围的上下文中捕获两个值runningTotal和amount。在捕捉到这些值后,incrementer被返回makeIncrementer的闭包的增量runningTotal由amount每次它被调用。
func makeIncrementer(forIncrement amount: