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