Enumerable#each_with_indexが便利すぎる

今更かもしれないけど、感動したのでメモ。

リストをeachなどで回すとき、インデックスも一緒に欲しいと言うのはどの言語でも往々にしてある。Javaで書いている時なんかせっかく拡張forで書こうとしたけどしぶしぶ普通のforに戻す、とかよくやる。
そんなときのために、Rubyにはeach_with_indexがある。要素とインデックスを一緒にブロックに渡してくれる。かゆい所に手が届く粋なヤツ。

(1..10).each_with_index do |element, index|
  # ...
end

一方、Enumerableにはselectやmapなど便利なメソッドがいっぱいある。こいつらもindexと一緒に回したいことってない?
こうすればいける。

(1..10).each_with_index.select do |element, index|
  # ...
end

Enumeratorを使ってるのでRuby 1.9出ない場合はrequireする必要がある。
injectとかも行ける。

(1..10).each_with_index.inject do |result, (element, index)|
  # ...
end

Enumerable#each_with_index便利すぎ。