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)