【问题标题】:Are Swift generics separately compiled? [duplicate]Swift 泛型是单独编译的吗? [复制]
【发布时间】:2014-09-18 16:03:27
【问题描述】:

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

【问题讨论】:

  • 我似乎记得在今年的高级 WWDC 会议视频之一中谈到了这一点。虽然很抱歉,但不能更具体:)

标签: generics swift


【解决方案1】:

它是两者的结合,取决于优化器决定什么会获得更好的性能。他们在WWDC Session 404: Advanced Swift 结尾处谈论它。幻灯片上写着:

Swift 可以直接运行通用代码

优化器可以随意生成通用代码的专用版本

  • 泛型的单独编译
  • 编译速度更快
  • 以代码大小换取速度的灵活性

【讨论】:

    【解决方案2】:

    在语义上,它类似于 C++ 方式。在使用T 参数化的Swift 泛型函数中,您可以在运行时直接使用T 访问事物,例如T.self。您也可以在 C++ 中执行此操作,但不能在 Java 中执行此操作,因为泛型仅在编译时进行,之后会被类型擦除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多