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