簡體   English   中英

在Swift 3中是否可以通過閉包簽名重載靜態方法?

[英]Is it possible to overload static method by closure signature in Swift 3?

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 :)'的歧義用法

是的,您可以在Swift 3中按閉包類型重載靜態方法,但是您需要為第一個函數指定參數的類型,因為其參數與第二個函數的參數部分匹配

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

}

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM