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: cBeim Iterieren über einen Hash sind die Blockparameter key und value:
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endDie 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.
Aufgabe
EinfachDer Hash scores ist gegeben. Iteriere mit each_with_index über seine Form to_a, sodass du sowohl Zugriff auf das (Name, Punkte)-Paar als auch auf seine Position hast. Gib pro Eintrag eine Zeile in diesem Format aus:
<rank>. <name> - <points>Wobei rank bei 1 beginnt (nicht bei 0).
Für den Standard-Hash lautet die Ausgabe:
1. Alice - 90
2. Bob - 85
3. Cara - 78Probier es selbst
scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }
# TODO: "<Rang>. <Name> - <Punkte>" für jeden Eintrag ausgeben, Rang beginnt bei 1
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
Überblick über String-MethodenString-InterpolationStrings durchlaufenSplitten und VerbindenRückblick – String Weaver4Blocks, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas Schlüsselwort yieldBlock-ParameterProcs und LambdasRückblick – Benutzerdefinierter Iterator2Bereiche
Was ist ein Bereich?BereichsmethodenBereiche in Case / WhenWiederholung – Übung zu Bereichen5Das Enumerable-Kraftpaket
Select und RejectMap verkettenReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Datenpipeline8Fortgeschrittene Entscheidungsfindung
Case mit Klassen & Regexwhen mit mehreren WertenTernärer OperatorInline-if / unlessRückblick – NotenklassifiziererÜbe selbstständig: Online-Ruby-Compiler