我有一个带有条件的脚本和一堆使用相同变量的检查。与此类似的东西:
my $size = "123B";
say "OK" if $size ~~ Str && $size.ends-with("B") && $size.chop >= 0;
Run Code Online (Sandbox Code Playgroud)
是否可以以避免重复的方式重写该行$size?我想到了类似交汇点的东西,但我不知道如何应用到它。或者也许是其他东西,但离我的线更短。
jub*_*us1 16
怎么样:
my $size1 = "123B";
given $size1 {
say "OK" if .Str && $_.ends-with("B") && $_.chop >= 0;
};
Run Code Online (Sandbox Code Playgroud)
$_是 Raku(以及 Perl)中的“主题变量”。您可以缩写为$_.ends-with(),或将代码进一步缩短为.ends-with(),如下所示。同样$_.chop可以进一步缩短为.chop,如下所示。
或者使用[&&]归约元运算符:
my $size2 = "123B";
given $size2 {
say "OK" if [&&] .Str, .ends-with("B"), .chop >= 0;
};
Run Code Online (Sandbox Code Playgroud)
或者使用all()连接点:
my $size3 = "123B";
given $size3 {
say "OK" if $_ ~~ all(.Str, .ends-with("B"), .chop >= 0);
}
Run Code Online (Sandbox Code Playgroud)
或者given完全消除该块:
my $size4 = "123B";
say "OK" if $size4 ~~ all(.Str, .ends-with("B"), .chop >= 0);
Run Code Online (Sandbox Code Playgroud)
https://course.raku.org/essentials/loops/topic/
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |