我发现了一行 Perl 代码,它pop
以我从未见过的方式使用。我一直认为pop
从数组中只返回一项,但以下用法有所不同:
my ($self, $loop, $resources) = @{pop @_};
似乎程序员正在使用一行代码和一个pop
命令从参数数组中获取三个项目,而没有创建显式for
循环。这究竟是如何工作的?
在这个例子中,@ _是一个数组,最后一个元素应该是一个数组引用。
因此,从@_pop(@_)
获取最后一个元素,然后将其取消引用到一个数组中;将前 3 个元素保存到 $self、$loop 和 $resources 中。
可以这样重写:
my $self = $_[-1]->[0];
my $loop = $_[-1]->[1];
my $resources = $_[-1]->[2];
或者像这样:
my $temp = pop @_;
my ($self, $loop, $resources) = @$temp;
所以,实际上它不是“一行中多次弹出”