配列への代入
配列への代入の際、添字が範囲になっていると、その範囲が置換されます。つまり、添字の範囲がいったん削除され、その位置に要素が挿入されます。
添字が範囲になっているときにnilを代入すると単なる削除になります。a[0]へnilを代入したときと、a[0..0]へnilを代入したときの振る舞いがまったく違うことに注意しましょう。
a = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G' ] p a #=> ["A", "B", "C", "D", "E", "F", "G"] a[1..2] = 'Rubyco' p a #=> ["A", "Rubyco", "D", "E", "F", "G"] a[3..4] = nil p a #=> ["A", "Rubyco", "D", "G"] a[0] = nil p a #=> [nil, "Rubyco", "D", "G"] a[0..0] = nil p a #=> ["Rubyco", "D", "G"] a[-2..-1] = nil p a #=> ["Rubyco"]