From: "H.TAKEI" Date: 2000-02-21T15:32:17+09:00 Subject: [ruby-list:20885] Re: collect + find_all ==> select ? 武井です。 > まつもと ゆきひろです > > In message "[ruby-list:20882] Re: collect + find_all ==> select ?" > on 00/02/21, "H.TAKEI" writes: > > |★ compact はどうして Enumerable のメソッドではないのでしょうか? > | > | ブロックはとりませんが,each で実現できる(と思います)し, > | Enumerableにあっていい気がします。 > > Array#compactは「nilでない要素を集めるメソッド」ではなく、 > 「配列からnilを取り除くメソッド」だからです。前者なら each > で実装できますから、Enumerableに入る余地はあると思います。 > # 名前が決まれば。 う〜,素人感覚だと,両者の機能は同じな気がするので, (より汎用性のある)Enumerableに前者の機能を実装し, その名前をcompactにしてよい気がしてしまいます。 『変更はより慎重であるべき』ということですか? > |★ "集合"をあつかうクラスはないのでしょうか? > | > | 私が collect.compact を使う用途の半分は集合データに対するものでした。 > > 私は大体は配列で済ましてしまいます。& とか | とかはその辺を > 意識したメソッドです。足りないメソッドがあれば追加しても良い > とは思います。 なるほどです。 必要ありそうな候補は, ・集合として同じか? ・部分集合か? ぐらいが思いつきます。 -- 話題ちょっと変わりますが,もう一度定義をみますと, Enumerableって直接Arrayを返すのですね。 Enumerable の定義として, ・入力はコンテナのeach ・出力はコンテナのpush ・(新しい空のコンテナを作るメソッド) のようにして Enumerable を Array から独立させる とかいうのはなかったでしょうか? -- takei.hideaki@lab.ntt.co.jp