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"

相关推荐
Mr_Tony11 小时前
Swift 中的 Combine 框架完整指南(含示例代码 + 实战)
开发语言·swift
用户794572239541312 小时前
【SnapKit】优雅的 Swift Auto Layout DSL 库
swiftui·swift
报错小能手13 小时前
ios开发方向——swift内存基础
开发语言·ios·swift
东坡肘子14 小时前
苹果的罕见妥协:当高危漏洞遇上“拒升”潮 -- 肘子的 Swift 周报 #130
人工智能·swiftui·swift
ˇasushiro2 天前
终端工具配置
开发语言·ios·swift
Swift社区3 天前
LeetCode 401 二进制手表 - Swift 题解
算法·leetcode·swift
Batac_蝠猫4 天前
值类型与引用类型:struct 与 class 的分工
swift
报错小能手6 天前
ios开发方向——对于实习开发的app(Robopocket)讲解
开发语言·学习·ios·swift
茶底世界之下6 天前
Harbeth:高性能Metal图像处理库,让你的图片处理速度飞起来!
前端·github·swift
风舞雪凌月7 天前
【趣谈】移动系统和桌面系统编程语言思考
java·c语言·c++·python·学习·objective-c·swift