rubyでmap_with_indexとかやりたい


よく忘れるのでメモ

ruby-1.8.7-p174 :001 > a = %w(a b c d e f g)
 => ["a", "b", "c", "d", "e", "f", "g"] 
ruby-1.8.7-p174 :002 > a.each_with_index.map{|v, i| "#{i}: #{v}"}
 => ["0: a", "1: b", "2: c", "3: d", "4: e", "5: f", "6: g"] 
ruby-1.8.7-p174 :009 > a.each_with_index
 => #<Enumerable::Enumerator:0x100330940> 


each_with_indexにブロックを渡さないとEnumerableを返すので、そのまま map すれば良い
簡単!


後Enumerable関係の話で、hash を inject する時に、毎回こんなことしてたけど、

hash.inject('') do |r, obj| 
  k,v = obj
  r += "#{k}:#{v}
end


こう書いた方がスマートになることに最近気がついた

  hash.inject(''){|r, (k, v)| r += "#{k}:#{v} "}