我遇到过一个代码段,其中定义的索引访问的范围以减号结尾。
array[1..-2]
这是什么目的?
答案 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的倒数第二个值。
希望这有帮助。