2.0.0p247 :007 > a = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
2.0.0p247 :008 > a[4,0]
=> []
2.0.0p247 :009 > a[5,0]
=> []
2.0.0p247 :010 > a[6,0]
=> nil
如上,为什么到 a[6,0] 返回值就成 nil 了呢?
文档里面说当索引开始处为数组区间末尾时会返回一个空数组。 原文:an empty string is returned when the starting index for a character range is at the end of the string.
@zsxywz0928 a[n, 0]
是在索引 n 处插入元素,这里 0 的含义是“换掉 0 个元素”。见《Ruby Programming》p109
是不是这个原因?索引 5 是可以插入的,而 6 不可以,因为 5 都没有,怎么插入啊?
@zsxywz0928 看 2.0 版的文档吧,里面有说:数组长度的的 range 是一个空数组。具体可以看这里 http://ruby-china.org/topics/13325,
作为改下元素的应用,实际上也能保持现在所有的元素原封不动,而将值插入数组里。“[n,0]”,实际上就是在索引 n 处插入元素。
alpha = ['a', 'b', 'c', 'd', 'e']
alpha[2, 0] = ['X', 'Y']
p alpha #=> ['a', 'b', 'X', 'Y', 'c', 'd', 'e']
当然 a[n,m] 也可以用来取值,这里读和写很灵活,我试了这个,发现后面的 1 位被覆写掉了
alpha = ['a', 'b', 'c', 'd', 'e']
alpha[2, 1] = ['X', 'Y']
p alpha #=> ['a', 'b', 'X', 'Y', 'd', 'e']