Ruby の Enumerable#each_with_index で index の初期値を指定する

Enumerable#each_with_index を利用すると index を付属してループする事ができます。

["homu", "mami", "mado"].each_with_index { |it, i|
    puts "#{i} : #{it}"
}
# => 0 : homu
# 1 : mami
# 2 : mado

index の初期値を指定してループする

index の初期値を指定してループしたい場合、Enumerator#with_index を利用する事ができます。
Enumerator をオブジェクトは Enumerable#each_with_index にブロックを渡さなかった場合に返ってくるので次のように記述することができます。

# #with_index の引数に index の初期値を渡す
["homu", "mami", "mado"].each.with_index(3) { |it, i|
    puts "#{i} : #{it}"
}
# => 3 : homu
# 4 : mami
# 5 : mado

# #each_with_index と同じでブロックを渡さなかった場合、
# Enumerator のオブジェクトが返ってくる
["homu", "mami", "mado"].each.with_index(3).map { |it, i|
    "#{i} : #{it}"
}
# => ["3 : homu", "4 : mami", "5 : mado"]