我想编写一些编译时代码(即编译项目时运行的代码)。这在其他语言(例如 Java)中用于编写代码生成器(例如 Dagger 2)。
这在 Swift 中可能吗?如果是这样怎么办?这对于我正在尝试做的事情相当重要。
最佳答案
你的问题很模糊。编写编译时代码有多种原因,这完全取决于您想要做什么。
如果您想编写仅基于某些编译时指令运行的条件代码,请使用
#if build configuration
statements
#else
statements
#endif
如果您想生成像预处理器在宏中所做的那样的代码以减少代码重复,那么您应该简单地改变您的思维方式并使用 swift 函数和泛型,它们将实现相同的结果,甚至更好。 (像 #define xxx ...
这样的简单宏被 let xxx = ...
替换)。
最后,如果您想生成大量代码,那么 Swift 不适合您,您应该使用专用的代码生成器或某种脚本语言。例如,如果您希望为状态机生成代码,请使用用于该任务的专用工具并将 UML 作为输入。显然,今天您将很难找到输出 Swift 代码的工具(至少 Swift 本身是一个移动目标),但这会随着时间的推移而改变。
关于ios - 如何在 Swift 中编写编译时代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25468874/