U. *_*ndl 2 arrays syntax perl for-loop max
试图在不能包含负数的数组中获得最大值我试过:
my @v;
#...
my $max = 0;
$max = $_
if ($_ > $max)
foreach (@v);
Run Code Online (Sandbox Code Playgroud)
perl 5.18.2 出现语法错误。
但是 (1)statement($_) foreach (@v);和 (2)$max = $_ if ($_ > $max);都可以,并且它们做了它们应该做的事情。
因此,如果 (1) 和 (2) 都是有效的语句,为什么不能将它们组合在用于 (1) 的模式中?
只是没有人需要提出建议;这是我使用不同语法解决问题的方法:
foreach (@v) {
$max = $_
if ($_ > $max);
}
Run Code Online (Sandbox Code Playgroud)
因此,如果 (1) 和 (2) 都是有效的语句,为什么不能将它们组合在用于 (1) 的模式中?
您在这里使用的后缀语法(又名语句修饰符)不支持这种语句。
该文件说(重点煤矿):
任何简单的语句都可以选择跟在 SINGLE 修饰符之后,就在终止分号(或块结尾)之前。
至于您的任务本身:从数组中获取最大值是一个非常常见的要求。一种简单而标准的方法使用核心模块中的函数max()List::Util:
use List::Util qw/max/;
my @v;
my $max = max 0, @v;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |