nextupprevious

Next:5.1.5 Упражнения
Up:5.1 Простые типы данных, определяемые программистом
Previous:5.1.2 Введение синонимических типов
 


5.1.4 Типы, заданные перечислением значений

Часто программист использует отрезок целых чисел в тех ситуациях, когда собственно числовое значение несущественно, а число -- это просто номер одного из небольшого упорядоченного множества возможных вариантов. В подобных случаях Zonnon разрешает вводить новый (простой) тип через перечисление по порядку имен всех его значений (см. рис. 5.2), например,

type NumberKind = (Bin, Oct, Dec, Hex);
        Month = (Jan, Feb, Mar, Apr, May, Jun, July, Sep, Oct, Nov, Dec);

Перечисление является типом, который состоит из именованного списка идентификаторов, обозначающих значения, которые составляют тип. Эти идентификаторы квалифицируются именем типа при использовании в качестве именованных констант в программе, например, Month.Jan - имя первой константы типа Month.

Значения упорядочены, и их отношение порядка определяется их текстуальной последовательностью в перечислении. Нет других значений, принадлежащих данному типу. Порядковый номер первого значения равен нулю и увеличивается на единицу при переходе от любого элемента перечисления к следующему идентификатору.

EnumType = "(" IdentList ")".
IdentList = ident { "," ident }.

Рис. 5.2. Синтаксис перечисляемого типа
 

Имена в различных перечислениях не обязаны различаться, поскольку всегда квалифицируются при использовании. Так для рассмотренного примера NumberKind.Oct всегда отличается от Month.Oct.

Для значений типа, заданного перечислением, из операций допустимы только операции отношения, а также допустимы стандартные функции: succ -- взятие следующего (по порядку) значения, pred -- дает предыдущее (по порядку) значение, integer -- выдает порядковый номер значения. Используя имя типа в качестве имени стандартной функции можно конвертировать целое число в значение, имеющее соответствующий порядковый номер, например,  Month(0) выдает первое значение значения типа Month.
 

Next:5.1.5 Упражнения
Up:5.1 Простые типы данных, определяемые программистом
Previous:5.1.2 Введение синонимических типов


© В.Н. Касьянов, Е.В.Касьянова, 2004