【问题标题】:How do I write compile time code in Swift?如何在 Swift 中编写编译时代码?
【发布时间】:2014-08-24 05:43:20
【问题描述】:

我想编写一些编译时代码(即编译项目时运行的代码)。这在其他语言(例如 Java)中用于编写代码生成器(例如 Dagger 2)。

这在 Swift 中可行吗?如果有怎么办?这对我正在尝试做的事情非常重要。

【问题讨论】:

  • 这与 Swift 本身无关。您可以使用 Python 或 Perl 等工具生成源代码并将其集成到 Xcode 构建过程中
  • 为什么这对您来说很重要?可能有更好的解决方案。
  • 您想要用 Swift 编写的代码生成器还是生成 Swift 代码的代码?
  • @Paulw11 有这样的例子吗?这可能是我正在尝试做的解决方案。
  • 我对含糊不清表示歉意。重要的部分是我希望能够在编译时检查一些类(一种反射)并以此为基础编写自动化代码。

标签: ios macos swift ios8


【解决方案1】:

你的问题很模糊。编写编译时代码有多种原因,这完全取决于您想做什么。

如果您想编写仅基于某些编译时指令运行的条件代码,请使用

#if build configuration
    statements
#else
    statements
#endif

如果您想像预处理器那样在宏中生成代码以减少代码重复,那么您应该简单地改变您的思维方式并使用能够实现相同结果的快速函数和泛型,而且效果会更好。 (#define xxx ... 等简单的宏被 let xxx = ... 取代。

最后,如果您想生成大量代码,那么 Swift 不适合您,您应该使用专用的代码生成器或某种脚本语言。例如,如果您正在寻找为状态机生成代码,请使用将 UML 作为输入的任务的专用工具。显然,您今天很难找到输出 Swift 代码的工具(至少 Swift 本身就是一个移动的目标),但这会随着时间的推移而改变。

【讨论】:

猜你喜欢
  • 2017-03-11
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
相关资源
最近更新 更多