要获取数组的子数组,我们可以执行以下操作:
@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.
感谢。
答案 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
(但如果其中一些元素是引用,它们仍将引用相同的数据)。