如何将 Str 转换为枚举?

Jim*_*ger 14 enums type-conversion raku

enum Colors<red green blue>

say red;  # OUTPUT: red

my $foo = "red";

my Colors $color = $foo.(...)
Run Code Online (Sandbox Code Playgroud)

我应该在存根中放入什么代码才能将 Str“红色”转换为颜色红色?

Jon*_*ton 17

声明enum符将元素安装在Colors包下并提供短名称,因此red也可以作为Colors::red. 因此,可以使用包查找语法来完成这项工作:

my Colors $color = Colors::{$foo};
Run Code Online (Sandbox Code Playgroud)

可选择提供错误或默认值:

my Colors $color = Colors::{$foo} // die "No such color $foo";
Run Code Online (Sandbox Code Playgroud)