多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**Haxe 3.0版本之后** 通过添加 `:enum` 元数据到一个抽象类型的定义,这个抽象类可以被用来定义有限值的集合: ~~~ @:enum abstract HttpStatus(Int) { var NotFound = 404; var MethodNotAllowed = 405; } class Main { static public function main() { var status = HttpStatus.NotFound; var msg = printStatus(status); } static function printStatus(status:HttpStatus) { return switch(status) { case NotFound: "Not found"; case MethodNotAllowed: "Method not allowed"; } } } ~~~ Haxe 编译器使用它们的值替换所有的字段访问到 `HttpStatus` 抽象类型,在 JavaScript 的输出则很明显: ~~~ Main.main = function() { var status = 404; var msg = Main.printStatus(status); }; Main.printStatus = function(status) { switch(status) { case 404: return "Not found"; case 405: return "Method not allowed"; } }; ~~~ 这和访问 [内联(第4.4.2节)](http://#) 声明的变量很相似,但是有几个优点: * 类型工具可以确保集合的所有值会被正确分配类型。 * 匹配模式在 [匹配(第6.4节)](http://#) 一个枚举抽象类型时检查其 [穷尽性(第6.4.10节)](http://#)。 * 用更少的语句定义字段。