Ios 在Swift 3中是否可以通过闭包签名重载静态方法?
在Swift 3中是否可以通过闭包类型重载静态方法? 例如,我有一个包含两个方法的结构:Ios 在Swift 3中是否可以通过闭包签名重载静态方法?,ios,swift,swift3,closures,overloading,Ios,Swift,Swift3,Closures,Overloading,在Swift 3中是否可以通过闭包类型重载静态方法? 例如,我有一个包含两个方法的结构: struct Some { static func doSomething(first: String, @escaping completion: ([Int]?) -> Void) { ... } static func doSomething(first: String, @escaping completion: ([Int]?, String?) -> Void) {
struct Some {
static func doSomething(first: String, @escaping completion: ([Int]?) -> Void) {
...
}
static func doSomething(first: String, @escaping completion: ([Int]?, String?) -> Void) {
...
}
}
但是,当我尝试调用第一个方法Some.doSomething(第一个:“Hello”){(numbers)in…}
(带有one参数的闭包)时,编译器会给我一个错误:
“doSomething(first:completion:)”用法不明确
是的,您可以在Swift 3中通过闭包类型重载静态方法,但是
需要将第一个函数的参数类型指定为
它的参数与第二个函数的参数部分匹配
我没有试过,但建议您尝试完全指定一些竞争参数。doSomething(首先:“Hello”){(number:[Int]?)->Void in…}@Bruce0是的,它有效。谢谢你的帮助!
Some.doSomething(first: "") { (number:[Int]?) in
}
Some.doSomething(first: "") { (number, value) in
}