0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HaxeAdvent Calendar 2016

Day 3

Haxeと定数Enum

Posted at

イベントを受け取るような処理ってよく書きますよね。

// こんな感じのコード

event.on("ready", function() {
    // somewhere
});

event.on("close", function() {
    // somewhere
});

上記のようなコードで、第一引き数の文字列のイベント名は型で定義してしまいたいところです。

// 第一引き数をStringではなく、以下のコードのように型で定義したい。

function on(eventName: EventType, cb: Void -> Void) {
    // somewhere
}

haxeではこのような問題を@:enumと抽象型を利用して解決することが出来ます。

// このようにイベントの文字列を定義する抽象型を作っておく
@:enum abstract EventType(String) from String to String {
    var ready: String = "ready";
    var close: String = "close";
}
// 文字で指定していたEventTypeに型チェックが効くようになった!

event.on(EventType.ready, function() {
    // somewhere
});

event.on(EventType.close, function() {
    // somewhere
});

EventType.xxxと記述した箇所はコンパイル時に文字列に変換されます。

この方法を覚えておくと、様々な場所で応用が効いて大変便利です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?