企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
如果只有一组有限的值被允许使用,那么枚举类型是一个不错的选择。个体的 [构造函数(第2.4.1节)](http://#) 表示允许的变型,并使编译器检查是否所有可能的值都被遵守的。可以在这里看到: ~~~ enum Color{ Red; Green; Blue; Rgb(r:Int, g:Int, b:Int); } class Main{ public static function main(){ var color = getColor(); switch(color){ case Red: trace("color was red"); case Green: trace("color was green"); case Blue: trace("color was blue"); case Rgb(r,g,b): trace("color had a red value of " + r); } } static function getColor():Color{ return Rgb(255, 0, 255); } } ~~~ 在检索通过分配` getColor()` 的返回值分配给 `color` 的值之后,一个 [switch 语句(第5.17节)](http://#) 根据 `color` 值进行分支。前三个情况是 `Red`,`Green` 和 `Blue`,它们是没有价值的,但是跟 `Color` 中没有参数的构造函数一致。最后的 `Rgb(r,g,b)` 展示如何提取构造函数中的参数值:它们可以作为局部变量使用在 `case` 表达式主体中,就像使用了一个 [var 表达式(第5.10节)](http://#) 一样。关于使用 `switch` 语句的高级信息将在 [模式匹配(第6.4节)](http://#) 章节进一步探索。