如何扩展枚举类型?
How to extend an enumeration type?
我经常需要在一些第三方枚举类型上加一个"default value",例如:
TThirdPartyEnum = (
eA,
eB,
eC
);
我想像这样定义一个枚举类型:
TMyEnum = (
eA,
eB,
eC,
eDefault
);
我想参考 TThirdPartyEnum
值以避免维护 TMyEnum
(每次 TThirdPartyEnum
值更改时都应更新)。
我试过以下方法没有成功:
TMyEnum = Low(TThirdPartyEnum)..High(TThirdPartyEnum) + eDefault;
TMyEnum = (
Low(TThirdPartyEnum)..High(TThirdPartyEnum),
eDefault
);
有编译器可以理解的语法吗?
您不能扩展枚举类型。
您将需要一种不同的方法来解决您的问题,也许通过声明一个新的枚举类型并编写辅助方法来在它们之间进行映射。您可以使用记录助手的隐式转换运算符来使代码更具可读性,但这可能比任务证明的更复杂。
我经常需要在一些第三方枚举类型上加一个"default value",例如:
TThirdPartyEnum = (
eA,
eB,
eC
);
我想像这样定义一个枚举类型:
TMyEnum = (
eA,
eB,
eC,
eDefault
);
我想参考 TThirdPartyEnum
值以避免维护 TMyEnum
(每次 TThirdPartyEnum
值更改时都应更新)。
我试过以下方法没有成功:
TMyEnum = Low(TThirdPartyEnum)..High(TThirdPartyEnum) + eDefault;
TMyEnum = (
Low(TThirdPartyEnum)..High(TThirdPartyEnum),
eDefault
);
有编译器可以理解的语法吗?
您不能扩展枚举类型。
您将需要一种不同的方法来解决您的问题,也许通过声明一个新的枚举类型并编写辅助方法来在它们之间进行映射。您可以使用记录助手的隐式转换运算符来使代码更具可读性,但这可能比任务证明的更复杂。