隙あらばinjectでselectとmapを同時に使う

http://rails.office.drecom.jp/takiuchi/archive/85を読みながら.

> [1,2,3].inject([]){|r,e| e != 2 ? r << e.to_s : r}
=> ["1", "3"]

なるほど,確かにselectとmapを一気に使った結果だなぁ.selectとmapを使うと,こう.

> [1,2,3].select{|e| e != 2}.map{|e| e.to_s}
=> ["1", "3"]


こんなのも有りか.

> ['sightow','nightow','sudo'].inject([]){|r,e|
 e =~ /igh/ ? r << e.sub(/igh/,'ai') : r}
=> ["saitow", "naitow"]

族っポイ書き方禁止!みたいな.

> [1,2,3].inject([]){|r,e| e == 2 ? r << e.to_s : r}
=> ["2"]

これだとrejectしてmapだぜ,とか言う冗談を思いついた.しょーもな.


selectとmapを同時に使う,使いどころはあるのかな.まずselectを使う場面がそれほど無い.あぁ,injectを使う隙が見つからない.