Iterowanie po tabelach
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 17 z 73.
Wiele razy wykonywałeś pętle po tabelach Lua: Luau zachowuje dokładnie te same pętle i dodaje typy zmiennych pętli. W przypadku tablic funkcja ipairs przechodzi kolejno po elementach, od indeksu 1 do #t, a oba elementy możesz opatrzyć adnotacjami typów:
local temps: {number} = {18, 21, 19}
for day: number, temp: number in ipairs(temps) do
print(`Day {day}: {temp}`)
endPamiętaj, że ipairs zatrzymuje się na pierwszym brakującym indeksie: luka z wartością nil w środku powoduje przedwczesne zakończenie pętli. W przypadku dobrze utrzymanych tablic rzadko stanowi to problem, ale warto o tym wiedzieć.
W przypadku map użyj pairs, które odwiedza każdą parę klucz/wartość, także klucze tekstowe. W mapie typu {[string]: number} zmienne pętli mają naturalnie typy string i number:
local ages: {[string]: number} = {Alice = 30, Bob = 25}
for name: string, age: number in pairs(ages) do
print(`{name} is {age}`)
endJedno istotne zastrzeżenie: pairs odwiedza klucze części haszującej w nieokreślonej kolejności. Kolejność może się różnić między uruchomieniami. Gdy potrzebujesz deterministycznego wyniku (posortowanych raportów, testów), zbierz klucze do tablicy, posortuj ją za pomocą table.sort, a następnie wykonaj pętlę po posortowanych kluczach przy użyciu ipairs i pobierz wartości z mapy.
Wyzwanie
ŁatwyUtwórz typowaną tablicę temps: {number} zainicjalizowaną wartościami 18, 21, 19 i 24.
Przejdź po niej za pomocą ipairs, dodając adnotacje typów do obu zmiennych pętli (day: number, temp: number). Dla każdego elementu wypisz dokładnie:
Day 1: 18(używając interpolacji ciągu znaków z backtickami) i dodaj każdą temperaturę do bieżącej sumy.
Po pętli wypisz sumę w osobnym wierszu.
Spróbuj swoich sił
-- Napisz kod tutaj
-- 1) zadeklaruj temps: {number} = {18, 21, 19, 24}
-- 2) for day: number, temp: number in ipairs(temps) do ... end
-- wypisując `Day {day}: {temp}` i dodając wartości do total
-- 3) wypisz total po zakończeniu pętli
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Wprowadzenie do Luau
1Pierwsze kroki z Luau
Czym jest Luau?Dlaczego warto używać Luau?Twój pierwszy kod w LuauSprawdzanie typów i tryby błędówPodsumowanie: Wprowadzenie do Luau4Praca z funkcjami
Typowanie parametrów i wartości zwracanychTypowanie funkcji anonimowychFunkcje niczego nie zwracająceParametry opcjonalneDomyślne wartości parametrówFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Typy podstawowe
Typy podstawowe: num, str, boolTyp „any”: furtka awaryjnaTyp „unknown”Typy Nil i opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenie typów podstawowych5Aliasy, typy sumy i przekroju
Aliasy typów dla typów prostychTypy sumyPraca z typami sumyTypy literałoweTypy przekrojuŁączenie aliasów typówPodsumowanie: zaawansowane kombinacje typów3Typowane tabele: tablice i mapy
Tablice typowaneDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie map i dostęp do nichIterowanie po tabelachTabele o mieszanej strukturzeWielowymiarowe tablice typowanetable.unpack i varargsPodsumowanie: tablice i mapyPoćwicz samodzielnie: Kompilator Luau online