Rückblick – Benutzerdefinierter 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
Ü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