Map und Collect
Teil des Abschnitts Grundlagen der Ruby-Journey von Coddy. Lektion 68 von 88.
Während each hervorragend geeignet ist, um Aktionen auf Elementen auszuführen, möchten Sie manchmal ein Array in ein neues umwandeln. Die map-Methode (auch collect genannt) macht genau das: Sie erstellt ein neues Array, das die Ergebnisse der Ausführung Ihres Blocks auf jedem Element enthält.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Ausgabe: 2, 4, 6, 8Der entscheidende Unterschied zu each besteht darin, dass map ein neues Array mit den transformierten Werten zurückgibt. Das ursprüngliche Array bleibt unverändert.
Hier ist ein praktisches Beispiel, das Temperaturen von Celsius in Fahrenheit umrechnet:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Ausgabe: 32, 68, 212Du kannst map auch mit Strings verwenden:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Ausgabe: Alice, BobDie Methoden map und collect sind identisch. Ruby bietet beide Namen an, sodass Sie denjenigen verwenden können, der sich in Ihrem Code besser liest. Die meisten Ruby-Entwickler bevorzugen map, weil es kürzer ist.
Aufgabe
EinfachLies eine einzelne Eingabezeile ein, die durch Kommas getrennte Ganzzahlen enthält (z. B. 2,4,6,8,10).
Teile die Eingabe in ein Array von Ganzzahlen auf und verwende dann die Methode map, um ein neues Array zu erstellen, in dem jede Zahl quadriert (mit sich selbst multipliziert) wird.
Gib jedes Element des neuen quadrierten Arrays in einer eigenen Zeile aus.
Wenn die Eingabe beispielsweise 2,4,6,8,10 ist, sollte die Ausgabe wie folgt aussehen:
4
16
36
64
100Wenn die Eingabe 1,2,3,4,5 ist, sollte die Ausgabe wie folgt aussehen:
1
4
9
16
25Wenn die Eingabe 3,7,11 ist, sollte die Ausgabe wie folgt aussehen:
9
49
121Wenn die Eingabe 10 ist, sollte die Ausgabe wie folgt aussehen:
100Probier es selbst
# Lies die kommagetrennte Eingabe ein
input = gets.chomp
# TODO: Schreibe deinen Code unten
# 1. Teile den Eingabestring in ein Array von Ganzzahlen auf
# 2. Verwende die map-Methode, um jede Zahl zu quadrieren
# 3. Gib jede quadrierte Zahl in einer eigenen Zeile ausDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung – Einfache LogikLogische Operatoren Teil 3Logische Operatoren Teil 47Rechner zum Aufteilen der Rechnung
WillkommensnachrichtBenutzereingaben erfassen10FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Methode13Arrays für Fortgeschrittene
Array-Slicing mit BereichenArray-Slicing mit IndizesArray-OperatorenInclude?-Methode2Variablen und Datentypen
Zahlen und VariablenString-DatentypBoolean-DatentypSymbol-DatentypDatentypen überprüfenNamenskonventionenWiederholung – Variablen erstellen5Entscheidungsfindung
If-AnweisungIf - ElseRückblick – Einfacher TaschenrechnerVerschachteltes If - ElseUnless-Anweisung8Schleifen
For-Schleife mit BereichenWhile-SchleifeBreakNextRückblick – FakultätTimes-SchleifeUntil-SchleifeVerschachtelte SchleifenRückblick – Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische KurzschreibweisenRückblick – Einfache MathematikVergleichsoperatoren6Grundlegende Ein- und Ausgabe
Ausgabe mit putsAusgabe mit print und pAusgabe mit VariablenEingabe mit getsDie chomp-MethodeTypumwandlungWiederholung – AltersrechnerWiederholung – Wahr oder FalschÜbe selbstständig: Online-Ruby-Compiler