まつもと ゆきひろです

In message "[ruby-dev:8779] Re: [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
    on 99/12/30, EGUCHI Osamu <eguchi / shizuokanet.ne.jp> writes:

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

まあ、[ruby-dev:8773]で中田さんが指摘された

  popは要素を返すが、pop(n)は配列を返す

という問題はちょっとヤな感じですね。

|keyword 引数が実現されたら、
|
|  x = ary.delete(last: 3)    # 最後3つを削除、それを要素とする配列をかえす。
|  ary.delete(at: 10)         # ary.delete_at(10) と同義
|
|なんて事ができますか?

原理的には可能でしょう。ただ、このようなある種文法を持つよう
なキーワードの使い方が妥当かどうかはまだ不明です。実際にキー
ワード引数が使えるようになって、いろいろ経験を積むことでどの
ような使い方が良いのか分かってくるのではないでしょうか。

しかし、その前にこの殺人的なスケジュールをなんとかしないと。
正月休みもないぞ。

|matz>    ary.splice(0, 2, nil)
|matz>    ary.splice(-3..-1, nil)
|matz> 
|matz> とか指定できた方が良いかなあ。
|
|あと、削除した位置に nil を残さない方が希望の動作なのでは、
|#毎回 compact! するのも面倒でしょ (^^)

内部で使っているreplaceはnilを[]と扱うようにしてますので、余
計なnilまで削除してしまいかねないcompact!は不要です。
これが妥当かというのは議論の余地があるのですが。

                                まつもと ゆきひろ /:|)