Python 内置函数 `all` 和 `any` 的 Perl 挂件
Perl pendant for Python Built-in Functions `all` and `any`
是否有像 Python 函数 all
或 any
那样工作的 Perl 函数? This answer from Jobin is a short explanation 这两个功能的工作原理。
我想确定(没有循环)是否所有错误消息都在以下结构中 defined and ne ""
:
$VAR1 = [{
'row' => [{
err_msg => "msg1",
a => "a1",
b => "b1"
},
{
err_msg => "msg2",
a => "a2",
b => "b2"
}]
},
{
'row' => [{
err_msg => "msg3",
a => "a3",
b => "b3"
},
{
err_msg => "msg4",
a => "a4",
b => "b4"
}]
}]
如果不循环执行检查是不可能的,但您确实可以使用 all
来执行此操作。
use List::Util qw( all );
my $ok =
all {
all { $_->{err_msg} }
@{ $_->{row} }
}
@$VAR1;
或
use List::Util qw( all );
my $ok =
all { $_->{err_msg} }
map { @{ $_->{row} } }
@$VAR1;
第一个版本效率更高,因为它只查看所有先前组都检查正常的组,而第二个版本无条件地对每个组都有效。不过,这种差异不太重要。
是否有像 Python 函数 all
或 any
那样工作的 Perl 函数? This answer from Jobin is a short explanation 这两个功能的工作原理。
我想确定(没有循环)是否所有错误消息都在以下结构中 defined and ne ""
:
$VAR1 = [{
'row' => [{
err_msg => "msg1",
a => "a1",
b => "b1"
},
{
err_msg => "msg2",
a => "a2",
b => "b2"
}]
},
{
'row' => [{
err_msg => "msg3",
a => "a3",
b => "b3"
},
{
err_msg => "msg4",
a => "a4",
b => "b4"
}]
}]
如果不循环执行检查是不可能的,但您确实可以使用 all
来执行此操作。
use List::Util qw( all );
my $ok =
all {
all { $_->{err_msg} }
@{ $_->{row} }
}
@$VAR1;
或
use List::Util qw( all );
my $ok =
all { $_->{err_msg} }
map { @{ $_->{row} } }
@$VAR1;
第一个版本效率更高,因为它只查看所有先前组都检查正常的组,而第二个版本无条件地对每个组都有效。不过,这种差异不太重要。