From: Motoyuki Kasahara Date: 1998-10-26T19:16:26+09:00 Subject: [ruby-list:10346] negative index of an array 笠原です。 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' のときの挙動はある意味で期待通りなのですが、 それ以外はよく分かりません。 ______________________________________________________________________ 笠原 基之(かさはら もとゆき)