翻译成 Perl,你可能会这样写:
sub testing
{
my $status;
if (($status = function1($param1, %param2)) &&
($status = function2($param1, %param2)) &&
($status = function3($param1, %param2)) &&
($status = function4($param1, %param2)))
{
# ...do whatever...
}
return $status;
}
或者,假设这$status
只是一个布尔值:
sub testing
{
return 0 if !function1($param1, %param2) ||
!function2($param1, %param2) ||
!function3($param1, %param2) ||
!function4($param1, %param2);
# ...do whatever...
return 1;
}
或者:
sub testing
{
return 0 unless function1($param1, %param2);
return 0 unless function2($param1, %param2);
return 0 unless function3($param1, %param2);
return 0 unless function4($param1, %param2);
# ...do whatever...
return 1;
}
如果你真的有 10 个具有相同调用签名的函数,那么你甚至可以这样做:
sub testing
{
my @funcs = ( &function1, &function2, &function3, &function4, &function5,
&function6, &function7, &function8, &function9, &function10,
);
for my $funcref (@funcs)
{
return 0 unless &$funcref($param1, %param2);
}
# ...do whatever...
return 1;
}
请注意,前三个替代方案将处理不同的函数调用签名,只是代码布局更加混乱;最后一个几乎需要列表中每个函数的相同函数调用签名。