Zusammenfassung – Eigener Iterator
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 20 von 56.
Erstellen Sie Ihre eigene Iterator-Methode, die yield verwendet, einen Block akzeptiert und einen nützlichen Wert zurückgibt, wobei alles aus diesem Kapitel kombiniert wird.
Aufgabe
MittelDefinieren Sie eine Methode namens each_even, die ein Array numbers entgegennimmt und jede gerade Zahl im Array an ihren Block übergibt (wobei ungerade Zahlen vollständig übersprungen werden).
Lesen Sie dann eine kommagetrennte Liste von Ganzzahlen ein, rufen Sie each_even darauf mit einem Block auf, der "Even: <n>" für jeden übergebenen Wert ausgibt, und geben Sie schließlich Folgendes aus:
Done: <count>Wobei count die Anzahl der übergebenen geraden Zahlen ist.
Für die Eingabe 1,2,3,4,5,6 lautet die Ausgabe:
Even: 2
Even: 4
Even: 6
Done: 3Probier es selbst
# TODO: definiere each_even(numbers), das jede gerade Zahl zurückgibt (yields)
numbers = gets.chomp.split(",").map(&:to_i)
count = 0
# TODO: rufe each_even mit einem Block auf, der "Even: <n>" ausgibt
# und count für jeden zurückgegebenen Wert erhöht
puts "Done: #{count}"
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
String-Methoden im ÜberblickString-InterpolationIterieren über StringsSplit und JoinRückblick – String Weaver4Blöcke, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas yield-SchlüsselwortBlock-ParameterProcs und LambdasZusammenfassung – Eigener Iterator7Hashes Teil 2
Hash.new mit StandardwertenIterieren über HashesVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt - Studentenverwaltung
ProjektübersichtStudent hinzufügen5Enumerable-Kraftpaket
Select und RejectMap-VerkettungReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Data Pipeline8Fortgeschrittene Entscheidungslogik
Case mit Klassen & RegexMulti-Value whenTernärer OperatorInline if / unlessRückblick – Noten-Klassifizierer