有三种方法可以实现泛型:
只是一个编译时检查工具,但每个模板实例都编译为相同的字节/汇编代码实现(Java,如注释"类型擦除"实现中所述)
每个模板实例化都编译为专用代码(C++,C#)
#1和#2的组合
在Swift中实现了哪一个?
Swift首先编译一个执行动态类型检查的实现,但是当速度与代码大小权衡有意义时,优化器可以选择克隆特定类型的专用实现.理想情况下,这可以获得始终克隆的90%的加速,而不会导致代码大小和编译时间爆炸.