在Ada中扩展枚举

Yon*_*ony 6 enums ada

是否可以在Ada中扩展Enum类型?如果我有例如:

type ABC_Type is (A, B, C);
Run Code Online (Sandbox Code Playgroud)

现在我想要新类型ABCDE_Type,它将包含ABC_Type所有的所有内容以及(D,E).有没有办法做到这一点?

oen*_*one 7

不,您不能在Ada中扩展Enum类型,您只能创建覆盖原始类型的子集的派生/子类型.

你必须反过来这样做:

type ABCDE_Type is (A, B, C, D, E);
type ABC_Type is new ABCDE_Type range A .. C;
-- or
subtype ABC_Type is ABCDE_Type range A .. C;
Run Code Online (Sandbox Code Playgroud)

  • 你知道,我不得不不同意这一点.我不认为他们确实搞砸了.这可能是OOP对编程所做的最大的损害:让人们认为一切都应该是可扩展的.如果您认为枚举(和其他数字)在'基础上应该是最一般的,并且对每个派生更专业,那么Ada中的子类型概念是非常优雅的.因此,您可以使用IEE745,然后将Float子类型设置为IEEE745'Range,从而删除非正规表示并允许您的Float操作假设该值为数字. (4认同)