我尝试了解如何使用Array#[]=
,并进行了一些操作:
enum[int] = obj → obj
enum[start, length] = obj → obj
enum[range] = obj → obj
问题1
我有一个数组b
,它在索引0
处保存了nil
。
b = []
b[0] # => nil
我试图在以下代码中用整数10
替换nil
。
b[-1] = 10 # => IndexError: index -1 too small for array; minimum: 0
为什么上面的代码不起作用,而下面的代码却可以?在数组大小为1的情况下,为什么索引0和-1被区别对待?
b[0] = 5 # => 5
b[-1] = 10 # => 10
问题2
我创建了一个大小为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]
b = []
并不包含nil
。如果给定索引处的值不存在,它只会返回nil
。> b[6789]
=>nil
- David Unric