Posts Tagged ‘kurz’

Zwischen for-Schleife und each: each_with_index!

Sonntag, April 20th, 2008

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.