こんにちは、なかむら(う)です。

In message "[ruby-list:40908] Re: slice の仕様とマニュアルの記述"
    on Jul.02,2005 12:29:14, <konami / kyoto-wu.ac.jp> wrote:
| ここで私の思い込みの原因を考えてみると,この場合には ! の意味が他のメ
| ソッドと異なっている(少なくとも私にはそう思える)ことにあるようです。

!メソッドは、selfまたはnilを返すメソッド... ではなくて、!がな
い同名メソッドの破壊的バージョンであり、実際に破壊的処理が行
われなかった時はnilを返す、というのが一般的ルールです。
そう考えると、むしろslice!がsliceと違う値を返すとびっくりしち
ゃうんじゃないでしょうか。
つまり、sliceありきでslice!の挙動が決まっているわけですね。


ここまで書いてふと思ったんですけど、slice!の定義としては、返
す値と同じ値にselfが変化する、というのもありえたかもしれない
ですね。

  a = [1, 2, 3, 4, 5]
  p a.slice!(1..3)  # => [2, 3, 4]
  p a               # => [1, 5] ではなく [2, 3, 4]

みたいな。
これが便利かというとそうは思わないので現状のままで満足なんで
すけどね。


それでは。
-- 
U.Nakamura <usa / garbagecollect.jp>