1

这是Array 类的 Ruby 文档中的一个示例

arr = [1, 2, 3, 4, 5, 6]
arr[2, 3]
 => [3, 4, 5] 
arr[1, 2]
 => [2, 3]

嗯,什么?帮助,有人吗?为什么 [2,3] 和 [1,2] 行为之间存在这种差异?

4

3 回答 3

2

阅读以下文档中的粗体线Accessing Elements

可以使用 #[] 方法检索数组中的元素。它可以采用单个整数参数(数字索引)、一对参数(开始和长度)或范围。

当您使用一对参数(开始和长度)时,它将返回一个从开始索引开始并继续长度元素的子数组。

在该行中arr[1, 2]- 1 是起始索引,2 是长度。意味着您从 的索引开始1arr您想要获取 2 个元素。

在该行中arr[2, 3]- 2 是起始索引,3 是长度。意味着您从 的索引开始2arr您想要获取 3 个元素。

也读Array#[]

于 2013-10-27T10:01:49.687 回答
1

这里没有差异(Ruby 数组索引从零开始)

arr = [1, 2, 3, 4, 5, 6] 
      (0, 1, 2, 3, 4, 5)  #=> their index/positions       

arr[2,3] #=> arr[start,length]- start at 2nd index; it has value 3 and get 3 elements [3,4,5]
arr[1,2] #=> arr[start,length]- start at 1st index; it has value 2 and get 2 elements [2,3]
于 2013-10-27T10:14:22.153 回答
0

如果您使用的是字母数组,可能会更容易查看。

>> arr = %w[a b c d e f g]
=> ["a", "b", "c", "d", "e", "f", "g"]
>> arr[2, 3]
=> ["c", "d", "e"]
>> arr[1, 2]
=> ["b", "c"]

前面的两个描述在这里适用,但您不太可能不翻译您所要求的和您得到的。

数组的索引从 0 开始,因此当请求从索引 2 开始的 3 个元素时,您会得到 c、d 和 e。

当您要求从索引 1 开始的 2 个元素时,您会得到 b 和 c。

于 2013-10-27T10:52:29.093 回答