サーチ…


構文

  • 列挙識別子 { コンストラクタ }

概要

Haxeの列挙型は代数的データ型 (ADT)です。主な用途は、データ構造の記述です。 列挙型はで示されているenumキーワードと1つ以上の列挙型のコンストラクタが含まれています。

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コンストラクタは、 パターンマッチングを使用して一致させることができます。

次の列挙型を仮定します。

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の例を試してみてください。

参考文献



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow