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"

相关推荐
帅次3 小时前
Flutter:StatelessWidget vs StatefulWidget 深度解析
android·flutter·ios·小程序·swift·webview·android-studio
东坡肘子7 小时前
期待与失望的循环:苹果的 AI 困境与韧性 | 肘子的 Swift 周报 #074
人工智能·swiftui·swift
Mr.NickJJ20 小时前
Swift系列02-Swift 数据类型系统与内存模型
开发语言·ios·swift
YungFan1 天前
iOS开发之网络代码进化史
ios·swift
晨枫阳3 天前
不同开发语言之for循环的用法、区别总结
开发语言·python·objective-c·swift·js
最后的轻羽4 天前
ios使用swift调用deepseek或SiliconFlow接口
开发语言·ios·swift
Mr.NickJJ4 天前
Swift系列01-Swift语言基本原理与设计哲学
开发语言·ios·swift
无知的前端5 天前
一文精通 Swift 中,Copy-on-Write(COW,写时复制)技术
面试·swift
Swift社区6 天前
【Swift 算法实战】存在重复元素 III
开发语言·算法·swift
coooliang8 天前
swift 开发效率提升工具
开发语言·ios·swift