使用反射添加属性

时间:2015-12-25 16:55:34

标签: swift

在Swift 2.1中,我尝试使用反射,以便在编译时将文本文件生成的案例添加到枚举中。

这是枚举包装器:

enum Kind : Int { 

}

使用C / ++我可以使用这个宏:

#define X(value, left, right) \
  value##Left = left, value##Right = right,

如何在Swift中获得类似的结果?

1 个答案:

答案 0 :(得分:3)

预处理器指令在Swift中被故意降低到最低限度。即使技术上可行,你的特定情况也会在enum s方面违背Swift哲学,因为这个哲学要求枚举上的switch语句详尽,即涵盖所有可能case s。

现在,如果您能够从某个文件中动态填写enum个案例,那么编译器如何能够确保详尽无遗?选择在整个程序中使用default:个案件基本上会将整个Swift关于enum安全权的想法抛到窗口。

如果你坚持使用Swift,那么你可能会更好地使用字典,因为@RMenke建议。