我想弄清楚Swift泛型是如何工作的。具体而言,我无法找到关于编译模型的精确声明。在C++中,泛型(模板)并不是单独编译的,因为它们被实例化(至少原则上)用于每个调用站点。相反,Java泛型是分别编译的。 Swift的情况如何,关于单独编写仿制药?Swift的泛型是否分别编译?
4
A
回答
3
这是两者的组合,具体取决于优化器决定哪些内容会获得更好的性能。他们在WWDC Session 404: Advanced Swift结束时谈论它。幻灯片说:
斯威夫特可以运行通用代码直接
优化可以随意产生的通用代码专门版本
- 仿制药的单独编译
- 更快的编译
- 灵活性用于速度的贸易码大小
1
从语义上讲,它类似于C++的方式。在使用T
参数化的Swift通用函数中,可以在运行时直接使用T
(如T.self
)访问事物。您也可以在C++中执行此操作,但不能在Java中执行此操作,此时泛型只能在编译时和类型擦除之后进行。
相关问题
- 1. Swift 3,泛型,编译错误
- 2. Swift 3中的泛型类别别名?
- 3. 的Java编译泛型
- 4. 泛型编译错误
- 5. Swift中泛型的泛型3
- 6. 编译错误泛型类型
- 7. 有界的Java的泛型不编译
- 8. 是否有可能创建编译时检查参数化泛型类型?
- 9. 奇怪的泛型编译错误
- 10. 泛型上的JSP编译错误
- 11. Swift flatMap和泛型
- 12. Swift 4 Codable&泛型
- 13. 使用MutableClassToInstanceMap与泛型编译错误
- 14. Scala编译器推断泛型参数
- 15. Controls.OfType()泛型方法调用不编译
- 16. Java泛型:编译器错误在eclipse
- 17. 甲泛型混乱:欺骗编译
- 18. 编译错误instanceof和泛型
- 19. 编译泛型时出现错误
- 20. F#编译错误与嵌套泛型
- 21. 避免编译泛型错误
- 22. Java泛型非问题在编译时
- 23. .NET泛型拳击编译错误
- 24. 使用雨燕的阵列没有任何编译器错误分配泛型类型泛型与AnyObject型
- 25. Swift中的泛型函数
- 26. Swift的泛型和子类
- 27. Swift:带回调的泛型
- 28. 泛型如何通过JIT编译器进行编译?
- 29. 泛型是不变的,但这种编译没有错误
- 30. Java泛型:谁是正确的,javac或Eclipse编译?
我似乎记得今年在其中一个WWDC高级会议视频中讨论了这个问题。不能更具体,虽然对不起:) – 2014-09-18 16:16:38