Perl:为什么 \@_ 为传入的数组提供别名?

问题描述 投票:0回答:1

这是对此处发布的问题的后续:如何在 Perl 中引用数组切片?

sub getArrayRef { return \@_ }

my @arr = (0, 1, 2, 3, 4);
my $sub_arr = getArrayRef(@arr[1..2]); # Changes made to $sub_arr->[0] reflect in $arr[1]

我只是想知道为什么会这样。这篇文章的作者说它的工作原理是“别名魔法”,但我不知道这意味着什么。

此方法与尝试从切片中获取引用不同:

my @arr = (0, 1, 2, 3, 4);
my $sub_arr = \@arr[1..2]; # array of references rather than aliases to elements of @arr

@_
有什么特别之处,
\
使它返回变量的别名而不是引用?

perl
1个回答
0
投票

perlsub

中所述

@_
是一个局部数组,但它的元素是实际标量参数的别名。

因此,本例中

@_
的元素包含数组的切片元素。您返回对数组的引用。

所以,

\
没有什么特别之处,但是
@_
很“神奇”。

© www.soinside.com 2019 - 2024. All rights reserved.