Ada语言之枚举类型

107 阅读1分钟

我们再来认识一下枚举类型,枚举类型就是直接将枚举成员直接书面化的声明方式,看如下的关于光学三基色的声明:

type  Tricolor  is  ( Red , Green , Blue ) ;

枚举类型是更方便人类识别的类型,枚举成员都是人类图像文字。语言还支持单字符的枚举成员(是不支持字符串枚举成员的),如下:

type  Hex_Char  is  (  ‘A’  ,  ‘B’  ,  ‘C’  ,  ‘D’  ,  ’E’  ,  ’F’  );

枚举类型也可以有子类型,如:

subtype  Hex12  is  Hex_Char  range  ‘A’  ..  ‘C’ ;

枚举类型的成员在计算机内部实际上是进行数值分配的,如果不采取指定数值,则从0开始分配。类型的尺寸则根据比特位所需最小值赋予。如:

type  boolean  is  (  False  ,  True  );

上方的boolean的比特尺寸为1。而前面定义的Tricolor的尺寸则为2 。我们也可以为枚举类型进行尺寸指定和成员值指定,如:

type  Tricolor  is  ( Red , Green , Blue ) ;

for  Tricolor  use  (  Red    =>  16#FF_00_00_00# ,

                    Green  =>  16#00_FF_00_00# ,

                    Blue   =>  16#00_00_FF_00#

);

for  Tricolor’Size  use  32;

上面的尺寸定义为4字节,最后空的一个字节保留为透明度Alpha 。

不同的枚举类型中可能出现同名的成员,而在使用成员名字时,编译器将会感到困惑,不能确定是那种类型的成员,这时我们需要一种表示方法告诉编译器具体是那种类型的成员,如:Tricolor’(Red),表示Tricolor类型的成员Red 。