0
我正在寫一個函數,需要返回一個項目數組。在函數中將會有一些邏輯來確定我想從函數返回的項目的類型。我一開始是這樣的:Swift通用數組到特定類型
func testFunc<T>(option:Int) -> [T] {
var result:[T] = []
switch option {
case 1:
let sampleString:String = "hello"
result.append(sampleString)
case 2:
let sampleInt:Int = 23
result.append(sampleInt)
default:
return result
}
return result
}
這使我有以下錯誤:
"cannot invoke append with an argument list of type '(String)',
and
"cannot invoke append with an argument list of type '(Int)'
這是有道理的,但是,我試圖找出如何解決我的問題。當我調用函數時,我不知道返回數組中的類型,但函數會知道如何確定類型,然後開始將項目附加到數組。
我該如何在Swift中完成這項工作?
類型檢查不知道'switch'es;它無法弄清楚什麼T _將基於'option'的值。是否有一個原因,你不能把它分成兩個功能? –
如果返回類型與輸入類型無關,則返回任意Swift 3或AnyObject Swift 2數組 –