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"

相关推荐
初级代码游戏1 天前
iOS开发 Swift 速记7:结构体和类
开发语言·ios·swift
初级代码游戏3 天前
iOS开发 Swift 速记5:高级运算符
ios·移动开发·swift
初级代码游戏3 天前
iOS开发 Swift 速记4:函数与闭包
开发语言·ios·swift
ZacJi3 天前
当苹果将系统 API 划归 @MainActor:一次跨 SDK 版本的 Swift 并发踩坑与破局实战
ios·swift
ZZH_AI项目交付3 天前
638 处旧名称残留——Swift/ObjC 混编项目安全重命名完整指南
ios·objective-c·swift
大龄秃头程序员3 天前
Swift 初体验之访问控制(Access Control)
swift
9765033355 天前
iOS 上架/审核 4.3a Cocos 2026最新方案解读
flutter·ios·swift·cocos2d·ios开发
2501_916007475 天前
IDE 是什么?集成开发环境详解与 iOS 开发选型指南
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
初级代码游戏5 天前
iOS开发 Swift 速记2:三种集合类型 Array Set Dictionary
开发语言·ios·swift
初级代码游戏6 天前
iOS开发 Swift 速记1:变量和基本数据类型
开发语言·ios·swift