Metoda map
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 60 z 78.
Funkcja wyższego rzędu to funkcja, która przyjmuje inną funkcję jako argument. Tablice mają kilka takich funkcji, a map() jest pierwszą z nich.
map() wywołuje funkcję dla każdego elementu tablicy i zwraca nową tablicę z wynikami, w tej samej kolejności:
func square(n):
return n * nvar numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)[1, 4, 9, 16, 25]Przekaż funkcję, używając jej nazwy, bez nawiasów: map(square) przekazuje funkcję dalej, natomiast map(square()) próbowałoby wywołać ją od razu. Następnie map() wywołuje ją dla każdego elementu: 1 zmienia się w 1, 2 zmienia się w 4, 3 zmienia się w 9 i tak dalej.
W przypadku krótkiego obliczenia lambda pozwala uniknąć tworzenia osobnej funkcji:
var squares = numbers.map(func(n): return n * n)Nowa tablica ma taki sam rozmiar jak oryginalna, a samo numbers się nie zmienia. Wyniki mogą mieć inny typ niż elementy:
var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))[5, 4, 6]map() zwraca zwykłą Array, nawet gdy wywołujesz ją na typowanej tablicy, takiej jak Array[int]. Zapisanie tego wyniku w zmiennej typu Array[int] zatrzymuje program z błędem, więc zapisz go w nietypowanej zmiennej lub w Array.
split() zwraca PackedStringArray, który nie ma metody map(). Najpierw przekształć go w tablicę: Array("1,2,3".split(",")).map(func(s): return int(s)) daje [1, 2, 3].
Wyzwanie
ŁatwyNapisz funkcję o nazwie convert_to_uppercase, która przyjmuje tablicę ciągów znaków, strings, i zwraca nową tablicę, w której każdy ciąg znaków jest zapisany wielkimi literami.
Użyj map() z lambdą, bez pętli. Na przykład convert_to_uppercase(["hello", "world"]) zwraca ["HELLO", "WORLD"].
Testy same wywołują convert_to_uppercase(). Nie wywołuj tej funkcji i niczego nie wypisuj.
Spróbuj swoich sił
func convert_to_uppercase(strings: Array[String]):
# Napisz kod tutaj
pass
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta11Funkcje wyższego rzędu
Metoda mapMetoda filterMetoda reduceany i allPowtórka — walidator adresów e-mailPowtórka — przetwarzanie liczb3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online