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:
100Spickzettel
Die map-Methode (auch collect genannt) transformiert ein Array in ein neues, indem sie einen Block auf jedes Element anwendet. Sie gibt ein neues Array mit den transformierten Werten zurück, wobei das ursprüngliche Array unverändert bleibt.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Ausgabe: 2, 4, 6, 8Beispiel mit Temperaturumrechnung:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Ausgabe: 32, 68, 212Beispiel mit Strings:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Ausgabe: Alice, Bobmap und collect sind identische Methoden. Die meisten Ruby-Entwickler bevorzugen map.
Probier 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 47Rechnungs-Splitter
WillkommensnachrichtBenutzereingaben abfragen10FizzBuzz mit Twist
SpielübersichtDie FizzBuzz-Methode13Arrays für Fortgeschrittene
Array Slicing mit BereichenArray Slicing mit IndizesArray-OperatorenInclude? Methode2Variablen und Datentypen
Zahlen und VariablenDatentyp StringDatentyp BooleanDatentyp SymbolDatentypen prüfenBenennungskonventionenZusammenfassung – Erstellung von Variablen5Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerVerschachtelte If - Else-AnweisungenUnless-Anweisung8Schleifen
For-Schleife mit RangesWhile-SchleifeBreakNextRückblick - FakultätTimes-SchleifeUntil-SchleifeVerschachtelte SchleifenRückblick - Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenWiederholung – Einfache MathematikVergleichsoperatoren6Grundlagen Ein- und Ausgabe
Ausgabe mit putsAusgabe mit print und pAusgabe mit VariablenEingabe mit getsChomp-MethodeTypumwandlungWiederholung - AltersrechnerWiederholung - Wahr oder Falsch