我想在Swift中爲泛型類添加一個類型(又稱靜態)方法。這是代碼。如何將類型方法添加到Swift中的泛型類型?
class StateArchive<T> {
class func emptyAllArchives() {
// do something
}
}
// the compiler emits an error: "Argument for generic parameter 'T' could not be inferred"
StateArchive.emptyAllArchives()
我可以得到上面的代碼在地方的T提供的類型,像這樣進行編譯:
StateArchive<AnyObject>.emptyAllArchives()
這看起來很笨拙,但是。最初我認爲這樣做的原因可能是人們可以創建類型爲T的類變量。在操場上的快速測試顯示編譯器發出消息說:
「類存儲的屬性尚未支持泛型類型」。
有誰知道如何在泛型類型中創建一個類型方法,並讓客戶端調用此方法時不提供類型替換T?
我沒有任何意義,您可以在不提供類型的情況下調用該靜態函數 - 如果在'emptyAllArchives'方法中使用'T'而不提供'T'類型會發生什麼? – ABakerSmith
我沒有意識到你可以在靜態函數中訪問T.現在有道理,爲什麼你需要指定T的類型。謝謝! – MaxK