发现一个 Array 的坑:
a=[1,2]
竟然 a[3,1].class != a[2,1].class
a[3..9].class != a[2..9].class
补充:他们应该都是 NilClass 才对。
a[3,1].class = NilClass
这不是坑,是你用错了,a[3,1]
表示获取从第 3 位起的一个下标,a
这个数组只有两个,当然返回 nil
api 文档里有一句。 Additionally, an empty array is returned when the starting index for an element range is at the end of the array. 所以
a[2, 1] = []
#6 楼 @blacktulip 同意 应该算是保护措施...
irb(main):001:0> a = [1,2,3,4]
=> [1, 2, 3, 4]
irb(main):002:0> a[2,2]
=> [3, 4]
irb(main):003:0> a[2,3]
=> [3, 4]
irb(main):004:0> a[2,5]
=> [3, 4]
我觉得比返回[3, 4, nil, nil]
要方便得多...