Menu
CoddyTech

Iterowanie po tabelach

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 17 z 80.

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 ipairs przechodzi po elementach w kolejności, od indeksu 1 do #t, a typy można określić dla obu zmiennych:

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ę przy pierwszym brakującym indeksie: luka nil w środku kończy pętlę przedwcześnie. 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ść, w tym klucze łańcuchowe. 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

Jedna ważna uwaga: pairs odwiedza klucze z części haszującej w niegwarantowanej kolejności. Może się ona 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 przejdź pętlą po posortowanych kluczach, używając ipairs, i pobierz wartości z mapy.

challenge icon

Wyzwanie

Łatwy

Wyświetl temperatury z tygodnia i ich sumę.

  1. Zadeklaruj local temps: {number} = {12, 15, 11, 14} oraz local total = 0.
  2. Użyj pętli for day: number, temp: number in ipairs(temps) do, wyświetl `Day {day}: {temp}` i dodaj temp do total.
  3. Po pętli wyświetl total.

Naciśnij Uruchom kod: wynik pokazuje Day 1: 12 do Day 4: 14, a następnie 52.

Spróbuj swoich sił

-- 1) zadeklaruj temps: {number} oraz total = 0
-- 2) wykonaj pętlę z typowanymi day i temp, wypisz każdy day, dodaj do total
-- 3) wypisz total

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online