Вы должны написать свой собственный (даже в Ruby 1.9, поскольку inject не возвращает итератор).
module Enumerable
def inject_with_index(injected)
each_with_index {|value, index| injected = yield(injected, value, index)}
injected
end
end
Редактировать: если вы переключите inject
и each_with_index
вокруг (благодаря комментатору!), Вы можете сделать это без нового метода:
["a", "b", "c"].each_with_index.inject("") do |result, (value, index)|
index != 1 ? result + value : result
end
Убедитесь, что вы вернули просто result
, если хотите исключить значение. Это также относится к первому способу.