【发布时间】:2011-12-25 16:51:39
【问题描述】:
在 Perl 5 中,当我们有一个命名数组时,例如@a,从索引$N 开始获取元素很简单,只需一点slicing:
my @result = @a[$N..$#a];
是否有一种标准方法可以对匿名数组执行相同操作,而无需显式提供长度? IE。可以这样吗:
my @result = (0,1,2,3,4,5)[2..5];
或者,更具体地说,这个:
my @result = (0,1,2,3,4,5)[$N..5];
被转换为不需要明确上限的东西?也许是一些晦涩难懂的 Perl 语法?也许是切丁而不是切片?
PS:我已经把它写成一个函数——我正在寻找一种更独立的方法。
【问题讨论】:
-
如果你想将
(0,1,2,3,4,5)的匿名数组分割成2 3 4 5,那么为什么不首先写(2,3,4,5)呢? -
@Blagovest Buyukliev:因为我的起始索引是可变的。我编辑了我的问题以反映这一要求。
-
什么是“匿名数组”? :-)
-
匿名数组和列表在 Perl 中也是完全不同的东西。 thkala 这里有一个列表,而不是匿名数组。
-
我想知道为什么perl不支持
@a[$i..-1]语法,而它支持在[...]中使用,而不是-1作为结束索引的多个切片,为什么?