【发布时间】:2014-10-06 07:25:51
【问题描述】:
在我问的另一个问题中,我试图找到一种从列表中获取子集列表(或数组)的方法,认为这可以通过切片或拼接来完成。使用数组,它就像这样微不足道:
@arr[2 .. $#arr]
获取一个数组,该数组具有从索引 2 处的元素开始到末尾的所有相同元素(即跳过前 2 个元素)。但是,如何使用列表来做到这一点,您不能使用类似 $#arr 的东西(因为列表没有名称)。那么问题来了,是否可以在不使用复制到数组或使用多行代码的情况下用列表来做这样的事情?是否有一些简单的符号来提取到达列表 end 的任意长度列表(无需事先知道列表的长度)?换句话说,是这样的:
(1,2,3,4,5,6,7)[1 .. -1];
(这显然行不通)得到
(2,3,4,5,6,7)
这样的符号或函数是否存在(对于列表)?
【问题讨论】:
-
我不相信它是内置的,但是你可以把它写成一个很短的函数。
-
您可以创建一个匿名数组引用并采用
splice例如:print "$_\n" for splice( [ (1,2,3,4,5,6,7) ], 1 ); -
@jaypal,复制每一个标量。我的版本只为每个标量复制一个 C 指针。
-
@ikegami 你是对的。已经投票给你的答案。
:)还有很多东西要学。 -
只是好奇你为什么要首先这样做。用例是什么?