数组[1 ..- 2]是什么意思?

时间:2014-06-22 20:44:29

标签: ruby arrays range

我遇到过一个代码段,其中定义的索引访问的范围以减号结尾。

array[1..-2]

这是什么目的?

3 个答案:

答案 0 :(得分:7)

在Ruby(以及Python,Perl和其他一些语言)中,负数组索引相对于数组的末尾进行解释。 array[-1]是数组的最后一个元素; array[-2]是最后一个。

所以这是省略第一个和最后一个元素的数组的一部分。

答案 1 :(得分:2)

这是将第二个元素中的所有元素都带到倒数第二个元素。换句话说,它会截断第一个和最后一个元素。有关负数组索引的更多信息,请参阅this link

答案 2 :(得分:2)

数组是零索引,意味着它们从0开始而不是1.例如,假设我们创建了一个数组

numbers = [1,2,3,4,5,6,7,8,9,10]

第一个数组元素,索引为0并用数字[0]表示将返回1.这是索引

[0,1,2,3,4,5,6,7,8,9]

这个数字数组的含义是从0到9而不是1到10。

有两种方法可以找到数组的最后一个值。

numbers[8] 

或者如果你不知道你可以做的数组中的值的数量

numbers[-1]

这将返回数字9。

您提到的是范围表示法,由起始值,两个连续点和一个结束值表示。

在你的例子中

array[1..-2]

表示它将返回以第2个元素开头并以第2个到最后一个元素结尾的数组的所有值。如果我们在我的数字数组上调用它

numbers[1..-2]

它将返回

[2,3,4,5,6,7,8,9]

换句话说,所有值包括从第二个值(2)开始到第二个到最后一个值(9)结束。另一方面

numbers[1...-2]
带有3个点的

表示范围是独占的,包含从第二个值开始的所有值BENEATH的倒数第二个值。

希望这有帮助。