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