枚举值作为Haxe中的参数默认值

时间:2015-07-09 04:11:59

标签: enums haxe

有没有办法在Haxe中使用enum默认参数?我收到这个错误:

  

参数默认值应该是常量

enum AnEnum {
    A;
    B;
    C;
}

class Test {
    static function main() { 
        Test.enumNotWorking();
    }
    static function enumNotWorking(e:AnEnum = AnEnum.A){}
}

Try Haxe link

2 个答案:

答案 0 :(得分:4)

更新: this feature has been added in Haxe 4。现在问题中的代码示例按常规.chart { border: 1px solid grey; }编译。

以前,只有在您愿意使用枚举摘要(编译时枚举,但在运行时使用不同类型)时,才有可能:

enum

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

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

答案 1 :(得分:2)

遗憾的是,枚举不能用作默认值,因为在Haxe中,枚举并不总是常量。

这段琐事在旧网站上,但显然还没有进入新手册:

http://old.haxe.org/ref/enums#using-enums-as-default-value-for-parameters

解决方法是在函数开头检查空值:

static function enumNotWorking(?e:AnEnum){
  if (e==null) e=AnEnum.A;
}

或者,Enum Abstract可能适合您的情况。