This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/85

yamazのRails日記 を読んでいて、injectを使う局面を思いついたのでメモ。

目的は、Arrayから特定の条件を満たす要素に変換を掛けた結果を取得する事です。

[1,2,3].inject([]){|r,i| i!=2 ? r<<i.to_s : r} #=> ["1","3"]
ちょうどselectとmapを同時にかけたような感じになります。

逆に、mapした結果をselectしたい場合は

["a","ab","aab"].inject([]){|r,i| (s=i=~/b/) ? r<<s : r} #=> [1,2]
こんな風にすればOKですね。

※注 このエントリの内容は、隙あらばinject派(Rubyist SNS)のお遊びなので、通常は可読性を考えてselectとmapを使ったほうが無難です(8/22 16:56 追記)

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/85

posted by Png genki on Tue 22 Aug 2006 at 00:11
Contents
selectとmapを同時に使う
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
瀧内元気: おお、チェックしてみます。thx! '11-12
overisland: Reeder for iPhone もこの UI を実装していますね。 '11-12
瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 ... '11-12
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ