1) Le plus simple est de remplacer index+1
au lieu de index
de la fonction:
some_array.each_with_index{|item, index| some_func(item, index+1)}
mais c'est sûrement pas ce que vous voulez.
2) La prochaine chose que vous pouvez faire est de définir un indice j
dans le bloc et l'utiliser à la place de l'index d'origine:
some_array.each_with_index{|item, i| j = i + 1; some_func(item, j)}
3) Si vous voulez utiliser les index de cette façon, souvent, ensuite, de définir une autre méthode:
module Enumerable
def each_with_index_from_one *args, &pr
each_with_index(*args){|obj, i| pr.call(obj, i+1)}
end
end
%w(one two three).each_with_index_from_one{|w, i| puts "#{i}. #{w}"}
# =>
1. one
2. two
3. three
Mise à jourCette réponse, qui a été répondu il y a quelques années, est désormais obsolète. Pour les modernes, Rubis, Zack Xu réponse fonctionnera mieux.