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"

相关推荐
东坡肘子10 小时前
高通收购 Arduino:历史的轮回 | 肘子的 Swift 周报 #0106
swiftui·arduino·swift
HarderCoder10 小时前
Swift 基础语法全景(二):可选型、解包与内存安全
swift
HarderCoder10 小时前
Swift 基础语法全景(三):元组、错误处理与断言
swift
HarderCoder10 小时前
Swift 基础语法全景(一):从变量到类型安全
swiftui·swift
怪力左手1 天前
地图下载工具
开发语言·ios·swift
YGGP1 天前
【Swift】LeetCode 15. 三数之和
swift
HarderCoder1 天前
Swift 6.2 类型安全 NotificationCenter:告别字符串撞车
swift
HarderCoder1 天前
Swift 控制流深度解析(一):循环、条件与分支
swift
HarderCoder1 天前
Swift 控制流深度解析(二):模式匹配、并发与真实项目套路
swift
QWQ___qwq2 天前
SwiftUI 的状态管理包装器(Property Wrapper)
ios·swiftui·swift