Sanny Builder
На русском
Search
K

Enums.txt

Перечисляемый тип или перечисление - это набор констант (называемых полями перечисления), имеющих общее имя (имя перечисления).
Перечисления имеют несколько преимуществ перед обычными константами. Они не засоряют общее пространство имен и являются участниками системы типов. Параметры, у которых перечисление является типом, имеют ограниченную область допустимых значений, что помогает избегать ошибок, связанных с неверным значением параметра.
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