【发布时间】:2021-03-31 14:15:56
【问题描述】:
我想了解是否可以在其中包含子原型和可选参数。使用原型我可以做到这一点:
sub some_sub (\@\@\@) {
...
}
my @foo = qw/a b c/;
my @bar = qw/1 2 3/;
my @baz = qw/X Y Z/;
some_sub(@foo, @bar, @baz);
这很好并且可读,但是我尝试做的那一刻
some_sub(@foo, @bar);
甚至
some_sub(@foo, @bar, ());
我收到错误:
Not enough arguments for main::some_sub at tablify.pl line 72, near "@bar)"
或
Type of arg 3 to main::some_sub must be array (not stub) at tablify.pl line 72, near "))"
是否可以有一个原型和可变数量的参数?还是可以通过签名实现类似的东西?
我知道它可以通过总是传递 arrayrefs 来完成,我想知道是否还有其他方法。毕竟,TMTOWTDI。
【问题讨论】:
-
你可以一起跳过原型。它们是可选的。
-
@TLP - 我的目标是避免展平作为参数传递的数组 - 请参阅 stackoverflow.com/questions/8128918/… 中的 cmets (
标签: perl