私はどのようにArray#[]=
動作するかを確認しようとしました:
enum[int] = obj → obj
enum[start, length] = obj → obj
enum[range] = obj → obj
質問1
b
インデックスを保持nil
する配列が 1 つあり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]