array [array.size ..- 1]不返回nil

时间:2014-12-19 13:56:43

标签: ruby arrays

Range用作Array下标时,我注意到一种奇怪的行为。 (至少对我来说很奇怪。)

a = [1,2,3]
=> [1, 2, 3]
a[3]
=> nil
a[3..-1]
=> []
a[4]
=> nil
a[4..-1]
=> nil

我认为a[3..-1]会返回nil,但不知怎的,它会返回[]a[-3..-4]也会返回[]

当我使用范围的边际值时,有人可以解释为什么它会返回[]

1 个答案:

答案 0 :(得分:4)

因为在range.begin == array.length时,它始终返回[]。这被称为"特殊情况"在the Ruby documentation中:

a = [ "a", "b", "c", "d", "e" ]
# special cases
a[5]                   #=> nil
a[6, 1]                #=> nil
a[5, 1]                #=> []
a[5..10]               #=> []