笠原です。

Array クラスにはインデックスの表現に start..end や start, length が使
えるメソッドがありますが、start, end がともに負で、かつ両方とも `配列
の長さ * (-1)' よりも小さいときのときの挙動がどうもよく分かりません。

メソッドの使い方としては、かなり意地悪な部類に入りますので、未定義なら
未定義でも良いのですが、もし法則があるとしたら、どうしてこのような結果
になるのでしょうか。

   self[start..end] = val の場合:
	a = ['a', 'b', 'c']
	a[-6..-5] = ['X', 'Y']    # a => [X, Y, a, b, c]

   self[start, length] = val の場合:
	a = ['a', 'b', 'c']
	a[-6, 2] = ['X', 'Y']     # a => [X, Y, c]

   fill(val, start..end) の場合:
	a = ['a', 'b', 'c']
	a.fill('X', -6..-5)       # a => [a, b, c]

   fill(val, start, length) の場合:
	a = ['a', 'b', 'c']
	a.fill('X', -6, 2)        # a => [X, X, c]

`self[start..end] = val' のときの挙動はある意味で期待通りなのですが、
それ以外はよく分かりません。
______________________________________________________________________
                                          笠原 基之(かさはら もとゆき)