【发布时间】:2011-03-06 07:38:07
【问题描述】:
与
@a=(6,3,5,7);
@b=(@a[0..3])[2..3];
print @b;
#print 57
但对于
@b=@a[0..3][2..3];
我收到语法错误。有人能解释一下原因吗?
【问题讨论】:
标签: perl arrays multidimensional-array
与
@a=(6,3,5,7);
@b=(@a[0..3])[2..3];
print @b;
#print 57
但对于
@b=@a[0..3][2..3];
我收到语法错误。有人能解释一下原因吗?
【问题讨论】:
标签: perl arrays multidimensional-array
@a=(6,3,5,7);
这将创建一个包含 4 个元素的数组。
(@a[0..3])
这将返回一个列表,其中包含与@a 相同的四个元素。
(@a[0..3])[2..3];
这会从括号内的 4 元素列表中选择最后两个元素。
print( join( ",", @b ) );
这将打印5,7,@a 中的最后两个元素。
为了好玩,试试以下:
@a=(6,3,5,7);
@b=(@a[0..3]);
print( "\@b=" . join(",",@b) . "\n" );
@c=@b[2..3];
print( "\@c=" . join(",",@c) . "\n" );
请注意,我使用 Perl 调试器来理解您的程序。如果您不确定 Perl 逐行执行的实际操作,您也可以这样做。
【讨论】:
$a[1][2] for 用于二维表,实际上是$a[1]->[2]的缩写
所以第一个索引需要返回一个引用而不是数组的切片。
语法错误来自 Perl 不知道如何取消引用数组。
【讨论】: