Map i collect
Część sekcji Podstawy ścieżki Ruby w Coddy. Lekcja 68 z 88.
Chociaż each świetnie sprawdza się przy wykonywaniu działań na elementach, czasami chcesz przekształcić tablicę w nową. Metoda map (nazywana również collect) robi dokładnie to: tworzy nową tablicę zawierającą wyniki działania bloku na każdym elemencie.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Wyświetla: 2, 4, 6, 8Kluczowa różnica w porównaniu z each polega na tym, że map zwraca nową tablicę z przekształconymi wartościami. Oryginalna tablica pozostaje niezmieniona.
Oto praktyczny przykład konwertowania temperatur ze stopni Celsjusza na Fahrenheita:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Wyświetla: 32, 68, 212Możesz też użyć map z ciągami znaków:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Wyświetla: Alice, BobMetody map i collect są identyczne. Ruby udostępnia obie nazwy, więc możesz użyć tej, która lepiej pasuje do Twojego kodu. Większość programistów Ruby woli map, ponieważ jest krótsza.
Wyzwanie
ŁatwyOdczytaj jeden wiersz danych wejściowych zawierający liczby całkowite oddzielone przecinkami (np. 2,4,6,8,10).
Podziel dane wejściowe na tablicę liczb całkowitych, a następnie użyj metody map, aby utworzyć nową tablicę, w której każda liczba jest podniesiona do kwadratu (pomnożona przez samą siebie).
Wypisz każdy element nowej tablicy z kwadratami w osobnym wierszu.
Na przykład, jeśli dane wejściowe to 2,4,6,8,10, dane wyjściowe powinny wyglądać tak:
4
16
36
64
100Jeśli dane wejściowe to 1,2,3,4,5, dane wyjściowe powinny wyglądać tak:
1
4
9
16
25Jeśli dane wejściowe to 3,7,11, dane wyjściowe powinny wyglądać tak:
9
49
121Jeśli dane wejściowe to 10, dane wyjściowe powinny wyglądać tak:
100Spróbuj swoich sił
# Wczytaj dane wejściowe rozdzielone przecinkami
input = gets.chomp
# TODO: Napisz swój kod poniżej
# 1. Podziel ciąg wejściowy na tablicę liczb całkowitych
# 2. Użyj metody map, aby podnieść każdą liczbę do kwadratu
# 3. Wypisz każdą liczbę podniesioną do kwadratu w osobnym wierszuTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operatory logiczne — część 47Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika2Zmienne i typy danych
Liczby i zmienneTyp danych StringTyp danych BooleanTyp danych SymbolSprawdzanie typów danychKonwencje nazewnictwaPodsumowanie — tworzenie zmiennych5Podejmowanie decyzji
Instrukcja ifIf - elsePowtórka — prosty kalkulatorZagnieżdżone if - elseInstrukcja unless8Pętle
Pętla for z zakresamiPętla whilebreaknextPowtórka – silniaPętla timesPętla untilPętle zagnieżdżonePowtórka – dynamiczne wejście3Operatory — część 1
Operatory arytmetyczneOperator moduloSkrócone operatory arytmetycznePodsumowanie — prosta matematykaOperatory porównania6Podstawowe wejście i wyjście
Wyświetlanie za pomocą putsWyświetlanie za pomocą print i pWyświetlanie zmiennychWczytywanie za pomocą getsMetoda chompKonwersja typówPodsumowanie – kalkulator wiekuPodsumowanie – prawda czy fałszPoćwicz samodzielnie: Kompilator Ruby online