作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我了解,Ada 在其枚举类型上使用基于 0 的索引。所以在下面的 Status_Type 中,序数值从 0 到 5。
type Status_Type is
(Undefined,
Available,
Fout,
Assigned,
Effected,
Cleared);
subtype Sub_Status_Type is Status_Type
range Available.. Effected;
subtype Un_Status_Type is Sub_Status_Type
range Fout .. Assigned;
最佳答案
对于子类型,'pos
将返回与基本类型相同的值(我相信分别为 1..4 和 2..3)。子类型并不是真正的新类型和不同类型,它们是相同的旧类型,但对其可能的值有一些额外的限制。
但需要注意的是,这些值是在场景下分配的。 他们是什么对你来说真的没有区别 , 除非您使用的是 'val
和 'pos
属性,或者您正在连接在 Ada 之外编写的代码(或硬件)。
另外,如果它最终很重要,您应该知道情况实际上要复杂得多。 'pos
和 'val
不要返回编译器在生成代码时用于这些枚举值的实际位值。他们只是返回他们的“顺序位置”;它们与第一个值的偏移量。
默认情况下,它们通常是相同的。但是,您可以使用 for ... use
自己更改值分配(但不是序数位置分配)。子句,如下面的代码所示:
for Status_Type use
(Undefined => 1,
Available => 2,
Out => 4,
Assigned => 8,
Effected => 16,
Cleared => 32);
关于enums - Ada 枚举类型范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338116/
我是一名优秀的程序员,十分优秀!