Menu
Coddy logo textTech

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}`)
end

Pamię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}`)
end

Jedno 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.

challenge icon

Wyzwanie

Łatwy

Utwó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
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online