是否可以通过Swift 3中的闭包签名重载静态方法?

时间:2016-12-07 05:18:20

标签: ios swift swift3 closures overloading

是否可以通过Swift 3中的闭包类型重载静态方法? 例如,我有一个包含2个方法的结构:

struct Some {
  static func doSomething(first: String, @escaping completion: ([Int]?) -> Void) {
    ...
  }

  static func doSomething(first: String, @escaping completion: ([Int]?, String?) -> Void) {
    ...
  }
}

但是当我尝试调用第一个方法Some.doSomething(first: "Hello") { (numbers) in ... }(带有一个参数的闭包)编译器给出了一个错误:

  

模糊地使用'doSomething(first:completion :)'

1 个答案:

答案 0 :(得分:2)

  

是的,你可以通过Swift 3中的闭包类型重载静态方法,但是你   需要为第一个函数指定参数的类型   它的参数与第二个函数的参数部分匹配

 Some.doSomething(first: "") { (number:[Int]?) in

}

Some.doSomething(first: "") { (number, value) in

}