Menu
Coddy logo textTech

Block-Parameter

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 18 von 56.

Die Variablen zwischen den Pipes, |x|, |x, y|, sind die Blockparameter. Sie benennen die Werte, die die Methode an den Block übergibt.

Einige Methoden übergeben einen Wert, andere übergeben mehrere. each übergibt jeweils ein Element:

[10, 20, 30].each { |n| puts n }

each_with_index übergibt zwei Werte: das Element und seinen Index:

["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end
# 0: a
# 1: b
# 2: c

Beim Iterieren über einen Hash sind die Blockparameter key und value:

{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

Die Anzahl und Reihenfolge der Blockparameter hängt davon ab, was die Methode liefert. Im Zweifelsfall schlagen Sie in der Dokumentation nach oder probieren Sie einen Parameter aus, um zu sehen, was Sie erhalten.

challenge icon

Aufgabe

Einfach

Das Hash scores ist gegeben. Iteriere darüber mit each_with_index in seiner to_a-Form, sodass du Zugriff auf sowohl das (name, points) Paar als auch dessen Position hast. Gib pro Eintrag eine Zeile in diesem Format aus:

<rank>. <name> - <points>

Wobei rank bei 1 beginnt (nicht 0).

Für das Standard-Hash ist die Ausgabe:

1. Alice - 90
2. Bob - 85
3. Cara - 78

Spickzettel

Block-Parameter werden zwischen Pipes |...| geschrieben und erhalten Werte, die von der Methode übergeben werden:

# each – ein Parameter
[10, 20, 30].each { |n| puts n }

# each_with_index – Element und Index
["a", "b", "c"].each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end

# hash each – Schlüssel und Wert
{ a: 1, b: 2 }.each do |key, value|
  puts "#{key} = #{value}"
end

hash.to_a konvertiert einen Hash in ein Array von [key, value]-Paaren, was nützlich für each_with_index ist:

{ a: 1, b: 2 }.to_a.each_with_index do |(key, value), i|
  puts "#{i}: #{key} = #{value}"
end

Probier es selbst

scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }

# TODO: "<Rang>. <Name> - <Punkte>" für jeden Eintrag ausgeben, Rang beginnt bei 1
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss