有没有办法在Haxe中使用enum
默认参数?我收到这个错误:
参数默认值应该是常量
enum AnEnum {
A;
B;
C;
}
class Test {
static function main() {
Test.enumNotWorking();
}
static function enumNotWorking(e:AnEnum = AnEnum.A){}
}
答案 0 :(得分:4)
更新: this feature has been added in Haxe 4。现在问题中的代码示例按常规.chart {
border: 1px solid grey;
}
编译。
以前,只有在您愿意使用枚举摘要(编译时枚举,但在运行时使用不同类型)时,才有可能:
enum
我选择的值并没有什么特别之处,如果它更适合您的用例,您可以选择其他类型(字符串或更复杂的类型)。您可以将它们视为常规枚举(对于switch语句等),但请注意,当您在运行时跟踪它时,您将得到" 1"而不是" A"
答案 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可能适合您的情况。