Metoda reduce
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 62 z 78.
reduce() łączy wszystkie elementy tablicy w jedną wartość: sumę, iloczyn, największy element lub zdanie.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10Przyjmuje dwa argumenty: funkcję i wartość początkową, tutaj 0. Funkcja otrzymuje dotychczasowy wynik, nazywany akumulatorem (acc), oraz kolejny element. To, co zwraca, staje się nowym akumulatorem:
acczaczyna od00 + 1to1,1 + 2to3,3 + 3to6,6 + 4to10- po ostatnim elemencie
reduce()zwraca akumulator:10
Dla iloczynu zacznij od 1: numbers.reduce(func(acc, n): return acc * n, 1) wynosi 24.
Bez wartości początkowej pierwszym elementem jest początek, a funkcja działa od drugiego elementu. To pasuje do wyszukiwania największego elementu:
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9W przypadku pustej tablicy bez wartości początkowej reduce() zwraca null, więc podaj wartość początkową, jeśli tablica może być pusta.
Akumulator może mieć dowolny typ. Wartość początkowa "" pozwala zbudować ciąg znaków z pierwszych liter:
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goWyzwanie
ŁatwyProgram odczytuje jeden wiersz liczb całkowitych oddzielonych przecinkami i zapisuje je w tablicy numbers. Ta część jest już napisana.
Używając reduce() dla każdej z nich, wypisz trzy wiersze:
- sumę liczb
- ich iloczyn
- największą liczbę (zapisz porównanie w lambdzie; nie wywołuj
max())
Zawsze jest co najmniej jedna liczba. Dla wejścia 3,7,2,8,4 wynikiem jest:
24
1344
8Spróbuj swoich sił
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Wypisz sumę, iloczyn i największą liczbę, używając za każdym razem reduce()
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