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"

相关推荐
东坡肘子21 小时前
毕业 30 年同学群:一场 AI 引发的“真假难辨”危机 -- 肘子的 Swift 周报 #112
人工智能·swiftui·swift
Antonio9151 天前
【Swift】UIKit:UIAlertController、UIImageView、UIDatePicker、UIPickerView和UISwitch
ios·cocoa·swift
Antonio9152 天前
【Swift】UIKit:UISegmentedControl、UISlider、UIStepper、UITableView和UICollectionView
开发语言·ios·swift
1***81532 天前
Swift在服务端开发的可能性探索
开发语言·ios·swift
S***H2832 天前
Swift在系统级应用中的开发
开发语言·ios·swift
HarderCoder2 天前
SwiftUI 状态管理极简之道:从“最小状态”到“状态树”
swift
Antonio9152 天前
【Swift】 UIKit:UIGestureRecognizer和UIView Animation
开发语言·ios·swift
蒙小萌19932 天前
Swift UIKit MVVM + RxSwift Development Rules
开发语言·prompt·swift·rxswift
Antonio9153 天前
【Swift】Swift基础语法:函数、闭包、枚举、结构体、类与属性
开发语言·swift
Antonio9153 天前
【Swift】 Swift 基础语法:变量、类型、分支与循环
开发语言·swift