From: Takao KAWAMURA Date: 2000-12-20T12:37:55+09:00 Subject: [ruby-list:26651] Re: Hash.reject returns a Hash? > |:Hashを返すと使いにくそうじゃないですか? > | > |これは, どちらも Array を返すようにするという意味ですか? > |それとも select は Enumerate にしかないから Array を返し, > |reject は Hash にあるから Hash を返す今のままの仕様で行くとい > |う意味? > > 後者です。selectでハッシュ返すのって使いやすいかなあって思っ > て。実際どうなんでしょう? 局面によるか。 いまのところ、ハッシュを返してもらった方が使いやすい気がして います。あるハッシュにフィルタをかけたハッシュを求めるといっ た処理を書きたいので。例えば b = a.reject { |k,v| v } の方が b = Hash[*a.select { |k,v| v }.flatten] # もっと簡単に書けるでしょうか? よりもわかりやすいかなと。rejectが便利ならハッシュを返す selectも便利だと思いますが…。もっとも、rejectの条件を逆にす ればいいだけかもしれません。 それに、rejectより前からHashにあったであろうreject!が自然な のに比べると、select!はやや不自然な気がするので、selectも Hashに作るのは変かもという気もします。 -- 川村 尚生