knuです。

At Sat, 1 Jan 2000 16:34:01 +0900,
Yukihiro Matsumoto <matz / netlab.co.jp> wrote:
> | あと、removeもよさそう。エイリアスとして提案します。
> 
> 調べたら意外にもRubyにはremoveって名前のメソッドはないんです
> ね。こちらは破壊的な印象が強調されてグッドですが、今度は抽出
> という側面が見えてきませんね。
> 
>   sub = ary.remove(0..4)
> 
> うーむ、抽出してるようには見えないか。あとdeleteとの違いに悩
> むかも。

 そもそも delete という語は削除、消去、抹消(erase)を意味するので、
戻り値を期待するのは変な感じがします。それに対し remove というのは
re-move であるところからも伺えるようにどこかへ持ち去るという意味
ですから、それを返り値という形で引き取るというのもあながち無理は
ないかなと思った次第です。

 しかし、もっといいのを思いつきました。slice と slice! を用意すると
いうのはいかがでしょうか。ary.slice(n..m) と ary.slice(n, len) は
それぞれ ary[n..m] と ary[n, len] を返し、slice! は同時に該当部分を
削除。

 破壊的メソッドというのがはっきりしますよね。いかがでしょう?

# ary[n..m] のことを配列のスライスというし。


 String についても、幸いにして substr(ing)? というメソッドはない
ようなので、 slice メソッドを導入しても使い分けや混同の心配はない
ですよね。

-- 
                     /
                    /__  __
                   / )  )  ) )  /  http://www.idaemons.org/knu/
Akinori MUSHA aka / (_ /  ( (__(   mailto:knu / idaemons.org

"We are but hungry..  Associated Ita-meshi Daemons!"
                                   http://www.idaemons.org/