ruby-1.8.7-p174 > [0,1][2..3]
=> []
ruby-1.8.7-p174 > [0,1][3..4]
=> nil
在 0 索引设置中,索引 2、3 和 4 实际上都超出了 2 项数组的范围,为什么它们会返回不同的值?
最佳答案
这是一个众所周知的丑陋奇角。查看 rdoc 中的示例 Array#slice .
这个具体问题被列为“特例”
a = [ "a", "b", "c", "d", "e" ]
a[2] + a[0] + a[1] #=> "cab"
a[6] #=> nil
a[1, 2] #=> [ "b", "c" ]
a[1..3] #=> [ "b", "c", "d" ]
a[4..7] #=> [ "e" ]
a[6..10] #=> nil
a[-3, 3] #=> [ "c", "d", "e" ]
# special cases
a[5] #=> nil
a[5, 1] #=> []
a[5..10] #=> []
如果开头恰好超出数组末尾的一项,则它将返回[]
,一个空数组。如果开始超出此范围,则 nil
。它已记录在案,但我不确定其原因。
关于ruby - ruby 如何处理数组范围访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947002/