swift - 为什么我不能在此默认参数值中使用速记参数名称?

标签 swift closures

以下代码未编译,但在我看来它应该:

public typealias ACallback = (first: [Int], second: String, third: String, fourth: CustomType) -> [Int];

public func doSomething(callback: ACallback = { $0 } {
    ...
}

我在函数声明的行上得到一个错误:

'(first: [Int], second: String, third: String, fourth: CustomType)' is not convertible to '[Int]'

当我这样声明函数时,它起作用了:

public fund doSomething(callback: ACallback = { first, _, _, _ in first } {

如果我用相同的内联定义替换 ACallback 也没有区别。

最佳答案

callback: ACallback = { $0.0 } 我想应该没问题。如错误所述,$0 表示此处该闭包的整个参数列表的元组。

关于swift - 为什么我不能在此默认参数值中使用速记参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216909/

相关文章:

ios - 无法使用类型为 ( ['NSObject' )、forKey : String) 的参数列表调用 updateValue

ios - 使用 Parse 时关闭 iOS 中的登录屏幕

ios - Swift 按钮调整大小动画

ruby - 在 Ruby 中定义一个闭包方法

使用闭包的 Javascript Fibonacci

swift - 为什么闭包中的 self 不引用所属的类实例?

ios - 将 Swift 便捷初始化程序转换为 Objective-C

ios - 如何从具有多个组件的 pickView 中获取确切的值

ios - 在带有 UITableView 的动态 UITextView 中跟随光标在 iOS 11 中不再工作

javascript - 带闭包的对象中键的排序函数 - Javascript