Enums 使用摘要作为枚举类型?

Enums 使用摘要作为枚举类型?,enums,haxe,Enums,Haxe,我正在看下面的Haxe源代码,它来自于- 我的问题是: 符号@:enum表示什么 为什么他们以这种方式创建枚举类型,而不是简单地执行以下操作: 枚举移动 { 岩石; 纸张 剪刀; } @enum元数据通知编译器将抽象类视为枚举。主要优点是能够为每个常量定义值 在本例中,数组[Move.Rock,Move.Paper]与[1,2]相同,但编译器将确保每个值都来自枚举类型 你可以在这里找到更多 class Test { static function main() { v

我正在看下面的Haxe源代码,它来自于-

我的问题是:

  • 符号
    @:enum
    表示什么
  • 为什么他们以这种方式创建枚举类型,而不是简单地执行以下操作:

    枚举移动 { 岩石; 纸张 剪刀; }


  • @enum元数据通知编译器将抽象类视为枚举。主要优点是能够为每个常量定义值

    在本例中,数组[Move.Rock,Move.Paper]与[1,2]相同,但编译器将确保每个值都来自枚举类型

    你可以在这里找到更多

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