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"

相关推荐
旷世奇才李先生19 小时前
Swift 安装使用教程
开发语言·ios·swift
Daniel_Coder1 天前
Xcode 中常用图片格式详解
ios·xcode·swift
帅次1 天前
Objective-C面向对象编程:类、对象、方法详解(保姆级教程)
flutter·macos·ios·objective-c·iphone·swift·safari
RyanGo2 天前
iOS断点下载
ios·swift
杂雾无尘2 天前
掌握生死时速:苹果应用加急审核全攻略!
ios·swift·apple
HarderCoder2 天前
Swift 6.2 中的 `@concurrent`
ios·swift
YungFan2 天前
iOS26适配指南之通知
ios·swift
大熊猫侯佩11 天前
消失的它:摆脱 SwiftUI 中“嵌入视图数量不能超过 10 个”限制的秘密
swiftui·swift·apple
大熊猫侯佩11 天前
Swift 抛砖引玉:从数组访问越界想到的“可抛出错误”属性
swift·apple
大熊猫侯佩11 天前
ruby、Python 以及 Swift 语言关于 “Finally” 实现的趣谈
python·ruby·swift