Всего в качестве упражнения по изучению системы типов Ада я пытался создать 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
или что-то еще, ожидающих получить январь.
Итак, два общих вопроса из этого глупого примера:
- Могу ли я иметь подтип, который указывает определенные компоненты его базового типа вместо диапазона?
- Могу ли я как-то скрыть детали реализации порядка, в котором я ставлю месяцы (например, сделать «Первый невидимым»)?
Спасибо!