Haxeはswitch文が便利


Haxeの通常のswitch文は以下のようになります。

var colorName = "";
var num = switch( colorName ) {
    case "red", "":      0xFF0000;
    case "green", "":    0x00FF00;
    case "blue", "":     0x0000FF;
    case "うぐいす":        0x928C36;
    default:
        throw "そんな色知らないよ!";
}

「break;」がない、caseが複数指定出来る、値を返すというのが特徴です。
これだけでも便利なんですがさらに便利なのはEnum(列挙型)を使った時です。


Enumとは

Enumは、AS3でいうところのイベント定数やキーコード定数のような実装を行うときに使われるデータ型です。

以下のように使います。

Main.hx
enum Keyboard {
    UP;
    DOWN;
    LEFT;
    RIGHT;
    Number( num:Int );
    Alphabet( charString:String );
}

class Main {
    static function main() {
        getKeyCode( Keyboard.UP );              //38
        getKeyCode( Keyboard.Alphabet( "A" ) ); //65
        getKeyCode( Keyboard.Alphabet( "z" ) ); //90
        getKeyCode( Keyboard.Number( 1 ) );     //49
    }

    static function getKeyCode( key:Keyboard ) {
        switch( key ) {
            case LEFT:
                return 37;

            case UP:
                return 38;

            case RIGHT:
                return 39;

            case DOWN:
                return 40;

            case Alphabet( char ):
                if ( char.length != 1 ) throw "charStringの長さは1でなければなりません";
                char = char.toUpperCase();
                var code = char.charCodeAt( 0 );
                if ( code < 65 || 90 < code ) throw "文字列がアルファベットじゃありません";
                return code;

            case Number( n ):
                if ( n < 0 || 9 < n ) throw "0~9を指定してください";
                return n + 48;
        }
    }
}

HaxeのEnumは変数を指定できるのが特徴で、これをswitch文により取りだすことができます。

Enumに複数の変数を指定することも可能です。

enum Sample {
    TEST( i:Int, s:String );
}

追記:
Haxe3になって、switch文はさらに便利になりました。
詳しくは、パターンマッチング - Haxe