haxe
Перечисления
Поиск…
Синтаксис
- enum identifier { constructors }
обзор
Типы перечисления Haxe являются алгебраическими типами данных (ADT). Их основное использование - описание структур данных. Перечисления обозначаются ключевым словом enum и содержат один или несколько конструкторов enum .
enum Color {
Red;
Green;
Blue;
RGB(r : Int, g : Int, b : Int);
}
Вышеупомянутое перечисление может быть представлено следующим образом:
var c1 = Color.Red;
var c2 = Color.RGB(255, 0, 0);
Попробуйте пример на try.haxe.org .
Рекомендации
Захват значений enum
Значения, переданные в качестве аргументов конструктора enum, могут быть записаны в переменные с использованием сопоставления шаблонов .
Предположим следующее перечисление:
enum Color {
RGB(r : Int, g : Int, b : Int);
HSV(h : Int, s : Float, v : Float);
}
Значение красного канала можно записать следующим образом:
var color = Color.RGB(255, 127, 0);
var red = switch (color) {
// Match the Color.RGB constructor and capture value into `r`
case Color.RGB(r, _, _):
// Return the captured red value
r;
// Catch-all for matching remaining constructors
case _:
// Return -1
-1;
}
Попробуйте пример на try.haxe.org .
Рекомендации
Соответствующие конструкторы перечисления
Конструкторы Enum могут быть сопоставлены с использованием сопоставления шаблонов .
Предположим следующее перечисление:
enum Color {
Red;
Green;
Blue;
RGB(r : Int, g : Int, b : Int);
}
Цвета с только зеленым значением канала можно сопоставить следующим образом:
var color = Color.RGB(0, 127, 0);
var isGreenOnly = switch (color) {
// Match Green or RGB with red and blue values at 0
case Color.RGB(0, _, 0) | Color.Green: true;
case _: false;
}
Попробуйте пример на try.haxe.org .
Рекомендации
- «Сравнение шаблонов», руководство Haxe
- «Enum matching», руководство Haxe
- «Или шаблоны», руководство Haxe