Zwischen for-Schleife und each: each_with_index!
Heute möchte ich kurz einen hilfreichen Enumerator vorstellen, den ich bis vor kurzem noch nicht kannte: each_with_index.
Problem
Jeder kennt each, welches einen Block auf jedem Element aus einer Liste ausführt. Ähnlich wie foreach in PHP kann man sich so eine ausgewachsene for-Schleife mit Index-Variable, Endbedingung und Inkrementierung sparen. Manchmal möchte man aber trotzdem wissen, an welcher Stelle das aktuelle Element in der Liste steht.
each_with_index
Der Enumerator each_with_index verlangt einen Block mit zwei Parametern: Dem eigentlichen Listenelement, und einer Index-Variablen.
Beispiel:
liste = %w{eins zwei drei}
liste.each_with_index { |element, index| puts "#{index+1}ter Eintrag: #{element}" }
Ausgabe:
1ter Eintrag: eins 2ter Eintrag: zwei 3ter Eintrag: drei
Benötigt man nur den Index ohne Element, gibt es auch each_index, welche nur einen Block-Parameter (den Index) hat.
Tags: each_index, each_with_index, kurz, Ruby, schleife