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"

相关推荐
season_zhu11 小时前
iOS开发:关于路由
ios·架构·swift
熊猫鹏-梓潼16 小时前
Swift Programming All in One苹果程序开发自学之路
开发语言·ios·swift
njsgcs1 天前
用swift playground写个ios应用和大模型或者网站交互
ios·swift
Swift社区1 天前
从表格到序列:Swift 如何优雅地解 LeetCode 251 展开二维向量
开发语言·leetcode·swift
leluckys1 天前
swift-11-init、deinit、可选链、协议、元类型
开发语言·ios·swift
njsgcs1 天前
vscode swift hello world
开发语言·ios·swift
Swift社区1 天前
LeetCode 252 会议室题全解析:Swift 实现 + 场景还原
算法·leetcode·swift
phoenix2 天前
Codable 宏让 Swift 序列化如此简单!
swift
leluckys2 天前
swift-08-属性、汇编分析inout本质
开发语言·汇编·swift
leluckys2 天前
swift-oc和swift block和代理
开发语言·ios·swift