From: Akinori MUSHA aka knu Date: 2000-01-04T01:44:53+09:00 Subject: [ruby-dev:8811] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)  knuです。 At Sat, 1 Jan 2000 16:34:01 +0900, Yukihiro Matsumoto 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/