ruby-1.8.7-p174 > [0,1][2..3]
=> []
ruby-1.8.7-p174 > [0,1][3..4]
=> nil
在一个从0开始的设置中,其中索引2、3和4实际上都超出了2项数组的范围,为什么它们会返回不同的值?ruby-1.8.7-p174 > [0,1][2..3]
=> []
ruby-1.8.7-p174 > [0,1][3..4]
=> nil
在一个从0开始的设置中,其中索引2、3和4实际上都超出了2项数组的范围,为什么它们会返回不同的值?这是一个已知的麻烦角落。请查看Array#slice的rdoc示例。
这个特定问题被列为“特殊情况”。
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
。虽然有记录,但我不确定原因。