difference between each.with_index and each_with_index in Ruby?

ruby

Solution

The `with_index` method takes an optional parameter to offset the starting index. `each_with_index` does the same thing, but has no optional starting index.

For example:

[:foo, :bar, :baz].each.with_index(2) do |value, index|
    puts "#{index}: #{value}"
end

[:foo, :bar, :baz].each_with_index do |value, index|
    puts "#{index}: #{value}"
end

Outputs:

2: foo
3: bar
4: baz

0: foo
1: bar
2: baz

Problem

I'm really confused about the difference between `each.with_index` and `each_with_index`. They have different types but seem to be identical in practice.

Original source