5
是否可以將可選通用參數設置爲默認值?Swift函數中可選通用參數的默認值
我試圖做這樣的事情:
func addChannel<T>(name: String, data: T? = nil) -> Channel {
}
let myChannel = addChannel("myChannelName")
但我發現了一個錯誤說
Argument for generic parameter 'T' could not be inferred
難道只是我想要的情況下做不成?
好的,這很有道理 - 我只是誤解了如何使用泛型。我的用例是'data'可以是任何類型的Dictionary,Int或String,或者它可以是零。是做這種做'data:AnyObject的首選方法? = nil',然後檢查函數內的數據類型? – hamchapman 2015-02-11 15:46:35
這樣做的首選方法不是「任何類型的Dictionary,Int或String」。確定它是什麼類型。這可能是一個「數據」類型,可能包含任何這些類型。你將它作爲一個帶有關聯數據的枚舉來實現。這樣你就可以確保你收到你期望的東西,而不僅僅是「AnyObject」。當你開始獲得AnyObject?進入你的系統,根據我的經驗,事情會變得非常糟糕。即使對設計問題進行了折扣,編譯器也不喜歡它。 – 2015-02-11 15:47:52
有關Enumerations的更多信息,這些是Swift中的關鍵類型,請參閱https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html。 – 2015-02-11 15:49:56