まつもと ゆきひろです

In message "[ruby-dev:8767] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
    on 99/12/30, Kazunori NISHI <kazunori / swlab.csce.kyushu-u.ac.jp> writes:

|  * まず、上述のような「破壊的な抽出」メソッドが(ないので)欲しい。
|  * 次に、語彙として(*1)、Array#pop/shift(num) も欲しい。
|
|です。

ま、意図は了解しました。

|(*1) ruby の Array は特に強力なので(添字の書き方で色々できるので)、逆
|に混乱する(読み書きにしくい)と感じる時がある。[n,m] だっけ?[n..m]だっ
|け?みたいな。だから、array[-1] でもよいがなるべく array.last と書きた
|い、array.splice(-1,3,nil) でもよいが、array.pop(3)と書きたい、と。

語彙については「できないもの」に比べて優先度が下がる傾向があ
ります。特に曖昧でない名前が必要です。pop(3), shift(3)がそう
かというと少し躊躇があります。

いや、そんなに悪いとも思わないんですけどね。

|> 名前はなんだろう?
|
|perl::splice は使った事ないのですが(何をやるものかわからなかったらしい)、
|荒井さんのコードを見る限り、まさに Array#splice がピッタリな気がします。

Array#spliceは導入の方向で考えましょう。が、あのコードだとイ
ンデックスと長さでしか指定できないけど、それで良い?

それとも

   ary.splice(0, 2, nil)
   ary.splice(-3..-1, nil)

とか指定できた方が良いかなあ。

|>   class Array
|>     def myeach(&block)
|
|これまた素晴しいですね。何で、そう上手く動くのかはわかりませんが(悔し
|いらしい)。ていうか、こ、これ標準装備して下さい!(高飛車なお願い)

標準のeachにはこの機能は追加しません。each全体の挙動が予想し
にくくなるので。別の名前でこれを標準装備するかどうかは、世論
によるということで。
                                まつもと ゆきひろ /:|)