3
我被功能重載解析帶密封蓋在夫特3.夫特3閉合重載解析
例如混淆,在代碼:
func f<T>(_ a: T) {
print("Wide")
}
func f(_ a: (Int)->(Int)) {
print("Narrow")
}
f({(a: Int) -> Int in return a + 1})
我期望Narrow
,不Wide
,要被打印到控制檯。任何人都可以解釋爲什麼選擇更具體的重載非閉合參數,但不是閉包,或者這是一個編譯器錯誤?
Swift 2展示了預期的行爲。
對我而言,哪些行爲是「預期」並不明顯,但Swift 2和Swift 3在這裏給出了不同的答案。如果這會以一些關鍵的方式影響到你,那麼肯定會給https://bugs.swift.org提出一個錯誤;至少你會得到一個很好的答案,通常不到一天。 – matt
是的,「預計」僅僅是「我個人並不認爲這會改變」。 –