1
我有意想不到的行爲而使用泛型重載方法:方法重載
func wrapper<T>() -> T? {
print(T.self)
let result: T? = internalFunc()
return result
}
func internalFunc<T>() -> T? {
print("generic")
return nil
}
func internalFunc() -> Int? {
print("non generic")
return nil
}
let s: Int = internalFunc() ?? 0
let s2: Int = wrapper() ?? 0
控制檯輸出:
非通用
詮釋
通用
我不明白爲什麼最後調用的方法是通用的。不應該動態選擇超載嗎?如果是這樣,我們可以看到T.self == Int.self
和非泛型方法應該被調用。我錯在哪裏?