Ruby中是否存在某种看不见的数组终止?

Ruby中是否存在某种看不见的数组终止?,ruby,arrays,Ruby,Arrays,我正在编写一个方法,该方法获取可变长度的数组,并将其压缩并转换为匹配的数组长度 该方法接受从50到126的任意数组长度。。并在调用时根据参数向下转换它们。这意味着我正在动态访问在方法调用时指定的范围。这也意味着我将访问不存在的数组索引。除此之外,我访问的范围可能相等。这就是我的问题所在:与任何其他不存在的索引相反,当使用范围访问数组时,数组的终止口袋的行为似乎很奇怪 >> a = [0, 1, 2, 3, 4] # => [0, 1, 2, 3, 4] >>

我正在编写一个方法,该方法获取可变长度的数组,并将其压缩并转换为匹配的数组长度

该方法接受从50到126的任意数组长度。。并在调用时根据参数向下转换它们。这意味着我正在动态访问在方法调用时指定的范围。这也意味着我将访问不存在的数组索引。除此之外,我访问的范围可能相等。这就是我的问题所在:与任何其他不存在的索引相反,当使用范围访问数组时,数组的终止口袋的行为似乎很奇怪

>> a = [0, 1, 2, 3, 4]
# => [0, 1, 2, 3, 4]  

>> a[5]
# => nil  

>> a[4..4]
# => [4]

>> a[6..6]
# => nil  

>> a[5..5]
# => [] <------GGRAAAAAhhh!!! Thought you were nil

>> a[5..7]
# => []   <-------you too

>> a[6..7]
# => nil <-----but you are behaving
>a=[0,1,2,3,4]
# => [0, 1, 2, 3, 4]  
>>a[5]
#=>零
>>a[4..4]
# => [4]
>>a[6..6]
#=>零
>>a[5..5]
#=>[]>a[5..7]
#=>[]>a[6..7]

#=>nil似乎很奇怪,但这是一种记录在案的行为:

超出范围选择是一种特殊情况,其工作原理如下:

虽然我同意这并不十分明显。

这是一种功能。只有在获取数组的子集时才会发生,数组的第一个端点等于长度

它允许您执行以下操作:

a = [1,2,3]
a[3..3] = [4,5] # a = [1,2,3,4,5]


编辑:实际上,你可以在任何范围内进行编辑。我的错。

马特先生赢了一分钟,但我把两个答案都投了赞成票。谢谢,伙计们,您可以,但我仍然认为您已经了解了一些内容,因为如果[3..3]在您的情况下返回nil,您将无法以这种方式添加到数组的末尾。如果添加到末尾,而不是添加到包括末尾在内的任何位置,我更喜欢a=a+[4,5]或a