Buscar..


Sintaxis

  • identificador de enumeración { constructores }

Visión general

Los tipos de enumeración de Haxe son tipos de datos algebraicos (ADT). Su uso principal es para describir estructuras de datos. Las enumeraciones se indican mediante la palabra clave enum y contienen uno o más constructores de enumeración .

enum Color {
    Red;
    Green;
    Blue;
    RGB(r : Int, g : Int, b : Int);
}

La enumeración anterior se puede instanciar de la siguiente manera:

var c1 = Color.Red;
var c2 = Color.RGB(255, 0, 0);

Pruebe el ejemplo en try.haxe.org .

Referencias

Capturar valores enum

Los valores que se pasan como argumentos de constructor enum pueden capturarse en variables mediante el uso de la coincidencia de patrones .

Supongamos la siguiente enumeración:

enum Color {
    RGB(r : Int, g : Int, b : Int);
    HSV(h : Int, s : Float, v : Float);
}

El valor del canal rojo se puede capturar de la siguiente manera:

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;
}

Pruebe el ejemplo en try.haxe.org .

Referencias

Coincidencia de constructores de enumeración

Los constructores de enumeración pueden emparejarse utilizando la coincidencia de patrones .

Supongamos la siguiente enumeración:

enum Color {
    Red;
    Green;
    Blue;
    RGB(r : Int, g : Int, b : Int);
}

Los colores con solo un valor de canal verde se pueden combinar de la siguiente manera:

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;
}

Pruebe el ejemplo en try.haxe.org .

Referencias



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow