我试着看看是如何Array#[]=
工作的,然后玩了一下:
enum[int] = obj → obj
enum[start, length] = obj → obj
enum[range] = obj → obj
问题 1
我有一个数组b
保存nil
在它的0
索引处。
b = []
b[0] # => nil
我尝试在下面的代码nil
中用整数替换。10
b[-1] = 10 # => IndexError: index -1 too small for array; minimum: 0
为什么上面的代码不起作用,但下面的代码起作用?对于 size 的数组1
,为什么索引0
和-1
处理方式不同?
b[0] = 5 # => 5
b[-1] = 10 # => 10
问题2
我创建了一个 size 数组2
,并执行了以下操作:
a = [1,2]
a[-3] = 3 # => IndexError: index -3 too small for array; minimum: -2
a[-3] = [3] # => IndexError: index -3 too small for array; minimum: -2
a[-3..-4] = [3] # => RangeError: -3..-4 out of range
我相信负索引永远不会增加数组的大小,但我不知道为什么。为什么下面的代码成功了?
a[-2..-3] = [3,4] #=> [3, 4]