我正在查看try.haxe.org上的“模式匹配 - 数组匹配”示例中的以下Haxe源代码 -
class Test {
static function main() {
var playerA = {
name: "Simn",
move: Move.Paper
}
var playerB = {
name: "Nicolas",
move: Move.Rock
}
// a switch can directly return something
var winner = switch ([playerA.move, playerB.move]) {
case [Move.Rock, Move.Paper]: playerB;
case [Move.Scissors, Move.Paper]: playerA;
default: null;
}
if (winner != null) {
trace('The winner is: ${winner.name}');
} else {
trace('Draw!');
}
}
}
@:enum
abstract Move(Int) {
var Rock = 1;
var Paper = 2;
var Scissors = 3;
}
我的问题是:
@:enum
表示什么?为什么他们以这种方式创建枚举类型而不是简单地执行:
枚举移动 { 岩石; 纸; 剪刀; }
答案 0 :(得分:1)
@enum元数据通知编译器将抽象类视为枚举。主要优点是能够为每个常量定义值。
在示例的情况下,数组[Move.Rock,Move.Paper]将与[1,2]相同,但编译器将确保每个值都来自枚举类型。