Enums.txt
Last updated
Last updated
Перечисляемый тип или перечисление - это набор констант (называемых полями перечисления), имеющих общее имя (имя перечисления).
Перечисления имеют несколько преимуществ перед обычными константами. Они не засоряют общее пространство имен и являются участниками системы типов. Параметры, у которых перечисление является типом, имеют ограниченную область допустимых значений, что помогает избегать ошибок, связанных с неверным значением параметра.
Enums.txt - это текстовый файл, который содержит перечисления, доступные для .
Каждое перечисление задается следующим образом:
enum <имя перечисления>
<поля перечисления>
end
имя перечисления
- это любая комбинация букв, цифр и _
поля перечисления
- одна или несколько строк в формате:
<имя поля> [= <значение поля>]
имя поля
- любая комбинация букв, цифр и _
значение поля
- число или строковый литерал, заключенный в двойные кавычки. Если отсутствует, компилятор присваивает автоматически.
Поля перечисления могут разделяться переносом строки (как в примере выше) или запятой:
В одном файле может быть несколько перечислений. Каждое из них должно иметь уникальное имя.
Файл с перечислениями не может содержать комментарии или незнакомый синтаксис.
Каждое поле перечисления представляет собой константу, которая присваивается явно либо неявно. Явным образом это происходит, если после имени поля стоит знак =
и допустимая константа:
Town.LS
представляет число 0
, Town.SF
представляет число 1
и Town.LV
представляет число 2
.
TicTacToe.Player1
представляет строковый литерал X
и TicTacToe.Player2
представляет строковый литерал O
.
Если полю перечисления явным образом не присвоена константа, это происходит автоматически. Первому полю присваивается 0
, второму 1
, третьему 2
и т.д.:
Town.LS
представляет число 0
, Town.SF
представляет число 1
и Town.LV
представляет число 2
.
Если в одном перечислении используются и явное, и неявное присвоения, это происходит по следующим правилам:
полю, которое следует за явно присвоенным числом, присваивается это число плюс 1:
E.A
= 10
, E.B
= 11
, E.C
= 100
, E.D
= 101
, E.E
= 102
полю, которое следует за явно присвоенным строковым литералом, присваивается литерал, дублирующий имя поля:
Month.Jan
= "January"
, Month.Feb
= "February"
, Month.March
= "March"
Перечисление не может одновременно представлять числа и строковые литералы. Тип перечисления определяется по первой явно присвоенной константе: