在Swift 2.1中,我尝试使用反射,以便在编译时将文本文件生成的案例添加到枚举中。
这是枚举包装器:
enum Kind : Int {
}
使用C / ++我可以使用这个宏:
#define X(value, left, right) \
value##Left = left, value##Right = right,
如何在Swift中获得类似的结果?
答案 0 :(得分:3)
预处理器指令在Swift中被故意降低到最低限度。即使技术上可行,你的特定情况也会在enum
s方面违背Swift哲学,因为这个哲学要求枚举上的switch
语句详尽,即涵盖所有可能case
s。
现在,如果您能够从某个文件中动态填写enum
个案例,那么编译器如何能够确保详尽无遗?选择在整个程序中使用default:
个案件基本上会将整个Swift关于enum
安全权的想法抛到窗口。
如果你坚持使用Swift,那么你可能会更好地使用字典,因为@RMenke建议。