swift - 为什么 Swift 会自动删除最后一个闭包参数名称?
问题描述
例如:
private func test1(closure1: () -> Void, closure2: () -> Void) {
}
调用时:
self.test1(closure1: {
}) {
}
已closure2
被删除。
还:
private func test2(closure1: () -> Void, closure2: () -> Void, closure3: () -> Void) {
}
调用时:
self.test2(closure1: {
}, closure2: {
}) {
}
已closure3
被删除。
我不明白为什么苹果设计成这样。
它使代码不那么清晰。
解决方案
这只是行业中的一种惯例——在函数中将最后一个闭包显示为尾随闭包。里面只有语法糖,但值得一提的是,你可以用任何一种方式编写它,我个人发现当一个方法有多个闭包参数时区分闭包很有用:
self.test1(closure1: {
...
}, closure2: {
...
})
推荐阅读
- java - 删除数组列表的数组列表中的索引
- php - 合并 PhpOffice\PhpWord\TemplateProcessor 中的列或行
- html - 文本悬停显示背后的图像(z-index) - 有什么问题?
- java - 不使用 toLowerCase() 将字母转换为小写
- sql - 以至少 2 个评分且平均高于 3 个 SQL 的平均降序排列
- c# - 如何在 ONVIF 协议上设置辅助命令?
- ios - 使用 Visual Format Language 以编程方式将子视图添加到 ScrollView
- javascript - 从 JSON 文件中读取,变量名不同,不匹配
- android - Android YouTubePlayer UI 定制
- java - Reactor(或 Akka)解决方案的 CompletableFuture 解决方案