获取对数组引用的子数组的引用

时间:2015-03-02 05:27:34

标签: perl

要获取数组的子数组,我们可以执行以下操作:

@x = (1,2,3,4,5,6);
@y = @x[1 .. 4]

我参考了一个数组

$x = [1,2,3,4,5,6];

获取子数组引用的简单方法

$y = $x->[1 .. 4]; #doesn't work.

感谢。

3 个答案:

答案 0 :(得分:1)

我认为不可能更好的方法是在新数组中使用子数组 然后引用该新数组。

@x = (1,2,3,4,5,6);
@y = @x[1 .. 4];

my $arrf = \@y
print "@$arrf";

答案 1 :(得分:1)

相当于

my @x = (1,2,3,4,5,6);
my @y = @x[1..4]

my $x = [ (1,2,3,4,5,6) ];      (Parens can be removed)
my $y = [ @$x[1..4] ];

基本相同
my @x = (1,2,3,4,5,6);   my $x = \@x;
my @y = @$x[1..4];       my $y = \@y;

没有子数组或对它的引用。

答案 2 :(得分:0)

数组切片不是变量,您不能对其进行引用。但是,如果您想要引用从原始数组切片创建的 new 匿名数组,那么

$y = [ @$x[1 .. 4] ];

其中@$x[1 .. 4]切片@$x的方式与@x[1 .. 4]切片@x相同,并且 [ ... ]运算符创建对新数组的引用。 @$y的元素是@$x中元素的浅层副本;修改@$y不会修改@$x(但如果其中一些元素是引用,它们仍将引用相同的数据)。