Perl中使用剩余参数进行解构的实现方法
Perl 5中实现JavaScript剩余参数的等价写法
Perl 5没有像JavaScript那样直接的...$rest语法糖,但有一步到位的等价写法,完全满足你要的剩余参数需求:
- 最简洁的写法:直接在列表赋值中用数组变量接收剩余元素
sub my_sub { my ($var1, @rest) = @_; # $var1 获取第一个参数 # @rest 获取剩下的所有参数(数组形式) }
这个写法和JS的function mySub(var1, ...rest)完全等价,Perl的列表赋值特性会自动把@_中第一个元素以外的所有元素打包给@rest,不需要多次赋值或切片。
- 处理多个前置参数的场景:同样适用,比如要取前两个参数,剩下的给
@rest:
sub my_sub { my ($var1, $var2, @rest) = @_; }
如果确实需要用切片方式(比如只取部分剩余元素),可以这样写,但对于普通剩余参数场景,上面的写法更直接:
sub my_sub { my $var1 = $_[0]; my @rest = @_[1..$#_]; }
内容的提问来源于stack exchange,提问作者awarrier99
相关产品推荐
相关产品推荐

