配列の要素を範囲指定で削除したいけどできない


Rubyの配列において，配列の要素を範囲指定して削除したいです．  
以下のURLを参考にしても全く同じ結果にはならないです．  
<https://uxmilk.jp/24060>

Rubyのバージョンは`ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin16]`です．

[code]

    target = [1, 2, 3, 4, 5, 6, 7]
    aaa = target.slice!(1, 3)
    p aaa
    
    
    a = ["a", "b", "c", "d", "e"]
    p a.slice!(1, 3)
    
[/code]

上記の実行結果は以下になります．

[code]

    [2, 3, 4]  # => [1, 5, 6, 7]にならない
    ["b", "c", "d"]  # => ["a", "e"]にならない
    
[/code]

期待した動作をしなく，原因がわかりません．  
期待した動作をするようにするにはどのようにしたら良いでしょうか．  
ご教授宜しくお願いします．




`slice(1, 3)` のようにコールすると、第一引数のインデックスから第二引数の文字数の部分文字列を返します。  
つまり、 `1, 3` の場合は2(0始まりなので1+1)文字目から3文字を取り出すことになります。  
<https://docs.ruby-lang.org/ja/latest/class/Array.html#I_SLICE>

`slice!(1, 3)` のようにコールすると、第一引数のインデックスから第二引数の文字数の部分文字列をレシーバーから削除します。  
そして、戻り値は `slice` と違ってレシーバー(削除済みの配列)ではなく、削除した要素が返されます。  
<https://docs.ruby-lang.org/ja/latest/class/Array.html#I_SLICE--21>

つまり、そちらのコードの目的は `a.slice!(1, 3)` で達成されていて、返り値は気にせずに  
再度 `a` にアクセスすると `['a', 'e']` が出来上がっています。

