我有一个带有条件的脚本和一堆使用相同变量的检查。与此类似的东西:
my $size = "123B";
say "OK" if $size ~~ Str && $size.ends-with("B") && $size.chop >= 0;
是否可以以一种避免重复的方式重写该行$size
?我想到了类似交汇点的东西,但我不知道如何应用到它。或者也许是其他东西,但离我的线更短。
我有一个带有条件的脚本和一堆使用相同变量的检查。与此类似的东西:
my $size = "123B";
say "OK" if $size ~~ Str && $size.ends-with("B") && $size.chop >= 0;
是否可以以一种避免重复的方式重写该行$size
?我想到了类似交汇点的东西,但我不知道如何应用到它。或者也许是其他东西,但离我的线更短。
怎么样:
$_
是 Raku(以及 Perl)中的“主题变量”。您可以缩写为$_.ends-with()
,或将代码进一步缩短为.ends-with()
,如下所示。同样$_.chop
可以进一步缩短为.chop
,如下所示。或者使用
[&&]
归约元运算符:或者使用
all()
连接点:或者
given
完全消除该块:https://course.raku.org/essentials/loops/topic/
{ when /B$/ { say 'OK' } } given my Str $size = '123B'
我的回答有点厚脸皮,因为你知道 $size 是一个 Str 如果它与正则表达式匹配并且你知道它是否有一个 B 作为最后一个字符,那么 .chop >= 0
这种概括可能更符合您所问的精神