From: nobu.nakada@... Date: 1999-12-31T13:13:30+09:00 Subject: [ruby-dev:8788] Re: [REQ] Array#each{|a,b,...|},Array#shift/pop(num) なかだです。 At Fri, 31 Dec 1999 11:00:54 +0900, EGUCHI Osamu wrote: > matz> |matz> 語彙については「できないもの」に比べて優先度が下がる傾向があ > matz> |matz> ります。特に曖昧でない名前が必要です。pop(3), shift(3)がそう > matz> |matz> かというと少し躊躇があります。 > matz> |matz> > matz> |matz> いや、そんなに悪いとも思わないんですけどね。 > matz> > matz> まあ、[ruby-dev:8773]で中田さんが指摘された > matz> > matz> popは要素を返すが、pop(n)は配列を返す > matz> > matz> という問題はちょっとヤな感じですね。 > > 同じクラスの同じメソッドが、状況によって違うクラスを返す事は、 > 稀ですがありますが、この場合がやしかに「ヤな感じ」ですね。 > はっきり区別された名前が必要だと言う事でしょうけど。 配列は多重代入などで特別扱いされることが多いからだと思うんです が。 とりあえずの Array#splice でも。一応 Perl の splice に合わせた つもりなんですが、Perl をよく覚えてなかったりするので自信なし。 # 最近の Perl にゃ Thread まであるとは。 class Array def splice(pos, *values) case pos when Range len = nil when Array pos, len = pos else len = values.shift end if len result = self[pos, len] self[pos, len] = values else Range === pos or pos = pos..-1 result = self[pos] self[pos] = values end result end end -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦