swift 闭包捕获列表

以下函数会打印出什么?

复制代码
var car = "Benz" 
let closure = { [car] in 
  print("I drive \(car)")
} 
car = "Tesla" 
closure()

因为 clousre 已经申明将 car 复制进去了([car]),此时clousre 里的 car 是个局部变量,不再与外面的 car有关,所以会打印出"I drive Benz"。 此时面试官微微一笑,将题目略作修改如下:

复制代码
var car = "Benz" 
let closure = {
  print("I drive \(car)")
} 
car = "Tesla" 
closure()

此时closure没有申明复制拷贝car,所以clousre用的还是全局的car变量,此时将会打印出 "I drive Tesla"

相关推荐
大熊猫侯佩2 天前
WWDC 25 玻璃态星际联盟:SwiftUI 视图协同“防御协议”
swiftui·swift·wwdc
无知的前端4 天前
一文精通-Combine 框架详解及使用示例
ios·swift
无知的前端4 天前
一文读懂 - Swift 和 Objective-C 创建对象时内存分配机制
ios·性能优化·swift
杂雾无尘4 天前
分享一个让代码更整洁的 Xcode 开发小技巧:设置文件目标平台
ios·swift·apple
大熊猫侯佩4 天前
WWDC 25 极地冰原撸码危机:InlineArray 与 Span 的绝地反击
swift·apple·wwdc
东坡肘子5 天前
Xcode 26 beta 4,要崩我们一起崩 | 肘子的 Swift 周报 #096
swiftui·swift·apple
杂雾无尘6 天前
解密 Swift 5.5 中的 @MainActor, 深入了解其优势与误区
ios·swift·客户端
胡桃夹夹子6 天前
xcode swift项目运行、连接真机运行报错,引入文件夹失败
cocoa·xcode·swift
卢叁7 天前
关于代码优化的一点思考
ios·swift
大熊猫侯佩8 天前
代码精讲:WWDC 25 @Animatable 宏 —— SwiftUI 动画的新突破
swiftui·swift·wwdc