From: matz@... (Yukihiro Matsumoto) Date: 2002-02-27T02:02:07+09:00 Subject: [ruby-dev:16124] Re: Array#select without block まつもと ゆきひろです In message "[ruby-dev:16122] Re: Array#select without block" on 02/02/27, Koji Arai writes: |あーなるほど。確かに。 | |ary[[1,2,3]] | |なんてのも考えたけど(これなら代入も考えられる)。ハッシュで配 |列をキーにすることはそうそうないとは思うけれど辛いなあ。 |# その機能は、fetch にゆずるとか。 今思い出しましたが、ごとけんさんはそれ(a[[keys]])を提案して ましたね。で、私の意見は予想通りで、ハッシュが配列をキーにす る可能性があるかぎり採用できないと思ってます。 |gdbm, dbm, sdbm に select を実装してみて思ったのは単に名前を |追加するだけに比べて、実装するのが面倒くさいんですよね、 Rubyは実装者にやさしくないですからねえ。 | if (block_given()) { | Enumerable#select の処理 | } | else { | indexes の処理 | } | |と、新しく *Enumerable#select* のコードを書かないといけない。 |ruby レベルならこの部分は super でいいのだと思うけど、拡張ラ |イブラリで super するにはどうすればよろしいでしょう? 一応、rb_call_super()って関数があります。Init_*の中で、 rb_enable_super()を呼んでおかないといけないけど。 |> という理由で、私には妥協可能なレベルでした。 | |妥協するぐらいなら今のまま問題を保留という選択肢もありかと思 |いますが、そういう方向も考えてらっしゃる? indexesのまま残すことは考えてないです。 うーん、「選択」じゃなくて「抜き取る」という観点からpickとか。 まつもと ゆきひろ /:|)