首页 > 解决方案 > 为什么 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被删除。


我不明白为什么苹果设计成这样。

它使代码不那么清晰。

标签: swift

解决方案


这只是行业中的一种惯例——在函数中将最后一个闭包显示为尾随闭包。里面只有语法糖,但值得一提的是,你可以用任何一种方式编写它,我个人发现当一个方法有多个闭包参数时区分闭包很有用:

self.test1(closure1: {
    ...
}, closure2: {
    ...
})

推荐阅读