Haxe Enum默认参数

rol*_*lnn 5 enums haxe

有没有办法enum在Haxe中使用默认参数?

我收到了错误 enum

enum AnEnum {
    A;
    B;
    C;
}

class Test {
    static function main() { 
        Test.enumNotWorking();
    }
    static function enumNotWorking(e:AnEnum = AnEnum.A){}
}
Run Code Online (Sandbox Code Playgroud)

尝试haxe 链接

Ben*_*ris 4

更新: Haxe 4 中已添加此功能。问题中的代码示例现在使用常规enum.

以前,只有当您愿意使用枚举抽象(编译时的枚举,但运行时的不同类型)时,这才是可能的:

@:enum
abstract AnEnum(Int)
{
    var A = 1;
    var B = 2;
    var C = 3;
}

class Test3
{
    static function main()
    {
        nowItWorks();
    }

    static function nowItWorks(param = AnEnum.A)
    {
        trace(param);
    }
}
Run Code Online (Sandbox Code Playgroud)

我选择的值没有什么特别的,如果它更适合您的用例,您可以选择其他类型(字符串或更复杂的类型)。您可以将它们视为常规枚举(用于 switch 语句等),但请注意,当您在运行时跟踪它时,您将得到“1”,而不是“A”。

更多信息: http: //haxe.org/manual/types-abstract-enum.html