相关疑难解决方法(0)

Swift 泛型是否单独编译?

我试图弄清楚Swift泛型是如何工作的。具体来说,我没有设法找到关于编译模型的精确陈述。在 C++ 中,泛型(模板)不是单独编译的,因为它们是为每个调用站点实例化的(至少在原则上是这样)。相反,Java 泛型是单独编译的。Swift 的情况如何,关于泛型的单独编译?

generics swift

5
推荐指数
1
解决办法
490
查看次数

如何在Swift中的[String:Class <Protocol>]类型的Dictionary中存储Class <ClassImplementingProtocol>类型的值?

我想在类型为[String:SomeClass]的Dictionary中存储一个更专业的类型.下面是一些说明我的问题的示例代码(也可以在https://swiftlang.ng.bluemix.net/#/repl/579756cf9966ba6275fc794a上进行):

class Thing<T> {}

protocol Flavor {}

class Vanilla: Flavor {}

var dict = [String:Thing<Flavor>]()

dict["foo"] = Thing<Vanilla>() 
Run Code Online (Sandbox Code Playgroud)

它会产生错误ERROR at line 9, col 28: cannot assign value of type 'Thing<Vanilla>' to type 'Thing<Any>?'.

我已经尝试过铸造,Thing<Vanilla>() as Thing<Flavor>但这会产生错误cannot convert value of type 'Thing<Vanilla>' to type 'Thing<Flavor>' in coercion.

我也尝试将Dictionary定义为类型,[String:Thing<Any>]但也不会改变任何东西.

如何在Thing不诉诸普通的情况下创建不同s 的集合[String:AnyObject]?

我还应该提一下,Thing我没有定义类(实际上它是关于BoltsSwift Task的),因此创建Thing没有类型参数的基类的解决方案不起作用.

generics swift

5
推荐指数
1
解决办法
1593
查看次数

标签 统计

generics ×2

swift ×2