当闭包捕获一个值类型(如结构体、枚举、元组等),它会根据声明的情况来决定是复制一份还是引用原来的值。下面是一个代码示例:
struct Person { var name: String var age: Int }
var person = Person(name: "Tom", age: 30)
// 通过值类型捕获方式,闭包捕获person的一个副本 let printPerson = { [person] in print("(person.name) is (person.age) years old.") }
person.age = 31 // 修改原始值
printPerson() // 输出:Tom is 30 years old.