当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]
也会返回[]
。
当我使用范围的边际值时,有人可以解释为什么它会返回[]
答案 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] #=> []