完全作为 Ada 类型系统的学习练习,我试图制作 3 种类型(或者更确切地说,一种类型和 2 个子类型):
Month_Type
, 所有月份的枚举Short_Month_Type
, 一个Month_Type
只有 30 天月份的子类型February_Month_Type
,只有二月的亚型
似乎子类型必须使用该range
机制,对吗?(还有其他类型的子类型吗?)为了让它与连续范围一起工作,我必须Month_Type
按以下顺序排列我的枚举:
type Month_Type is (February, April, June, September, November, January, March, May, July, August, October, December);
显然,这不是几个月的自然顺序,我可以看到人们/我正在尝试做Month_Type'First
或期望得到一月份的事情。
所以,这个愚蠢的例子有两个一般性问题:
- 我可以有一个子类型来指定其基本类型的特定组件而不是范围吗?
- 我可以以某种方式隐藏我放置月份的顺序的实现细节(例如,让'First不可见)?
谢谢!