ループの素敵な書き方

配列の中のHashから値を取り出して、ある条件の場合のみ
配列に詰め込むという場合。
普通はこう

target=[{:a=>1,:b=>"fu"},{:a=>2,:b=>"ga"},{:a=>3,:b=>"ho"},{:a=>4,:b=>"ge"}]
res = []
target.each{|i| res << i[:b] if i[:a] > 2}

 
素敵なRubyではこう

target=[{:a=>1,:b=>"fu"},{:a=>2,:b=>"ga"},{:a=>3,:b=>"ho"},{:a=>4,:b=>"ge"}]
target.inject([]){|res, n| res << n[:b] if n[:a] > 2; res}

 
injectってこんな感じで使うのだなぁ。