考虑以下玩具代码:
my $age-check = do given 18 {
when $_ > 18 { 'old enough' }
when $_ < 18 { 'too young' }
};
say "The user is $age-check" # OUTPUT: «The user is False»
该代码存在一个 bug(不处理输入恰好为 18 的情况),导致运行时错误。有没有办法通过要求
given
块穷尽匹配来在编译时捕获此错误?似乎可以使用 CHECK
阶段或类似的东西来要求匹配是穷尽的,但我不太确定该如何做到。(我知道你可以通过抛出错误的
default
情况更早地在运行时捕获 bug,但这不是我要问的。如果 Raku 没有办法在编译时强制执行穷尽匹配,那对该语言来说并不是一个大问题,但这可以是一个有用的功能。)