【发布时间】:2012-02-08 12:25:26
【问题描述】:
在我的代码中,我一直在使用从函数调用中提取参数的相当原始的方法,如下所示:
sub addSix ($$$$$$) {
my ($a, $b, $c, $d, $e, $f) = (shift, shift, shift, shift, shift, shift);
return $a + $b + $c + $d + $e + $f;
}
print addSix (1, 2, 3, 4, 5, 6) . "\n";
(忘记原始代码,显着位是多个shift 调用)。
现在这对我来说似乎相当混乱,虽然 Perl 可能有类似的东西:
my ($a, $b, $c, $d, $e, $f) = shift (6);
或类似的东西。
但我找不到类似的东西。我知道我可以为此使用数组,但我认为我仍然必须将数组解压缩为单独的标量。这对于上面的示例情况来说并不算太糟糕,其中六个参数相似,但我更感兴趣的是它们并不真正适合作为数组的情况。
如何在提取参数时避免陷入shift 关键字的泥潭?
【问题讨论】:
-
注意:避免使用
$a和$b作为变量名,因为它们只能在sort块中使用。 -
@Zaid,那是 示例 代码,我实际上命名我的真实变量比那更简洁:-)
-
显然不是为了添加示例,而是对于需要多个参数的真实子例程,最好开始使用命名参数:
my %params = @_;并将其称为mysub foo => 1, bar => 2, baz => 3, ... -
@brian d foy 链接似乎已失效。这是同一篇文章吗:effectiveperlprogramming.com/2011/10/…?