0Pricing
Lua Academy · Lekcja

Iterowanie za pomocą ipairs

Przeiteruje Pan/Pani po sekwencjach w kolejności.

Iterowanie za pomocą ipairs to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Dlaczego ipairs

Przechodzenie po sekwencji według indeksu działa, ale ipairs jest czytelniejsze i bezpieczniejsze. Przekazuje ono każdy indeks i wartość w odpowiedniej kolejności.

Zaczyna od indeksu 1 i zatrzymuje się przy pierwszym nil, dzięki czemu idealnie nadaje się do sekwencji bez luk.

local fruits = {"apple", "banana", "cherry"}
for i, v in ipairs(fruits) do
  print(i, v)
end

Schemat pętli

Wzorzec ma postać for index, value in ipairs(t) do ... end.

Podczas każdego przebiegu index oznacza pozycję indeksowaną od 1, a value jest znajdującym się na niej elementem. Nie jest potrzebny ręczny licznik.

local colors = {"red", "green", "blue"}
for i, c in ipairs(colors) do
  print("Color", i, "is", c)
end

Pomijanie indeksu

Jeśli potrzebne są tylko wartości, zgodnie z konwencją należy nazwać indeks _, aby zaznaczyć, że nie jest używany.

Pętla nadal odwiedza elementy w kolejności indeksowanej od 1.

local nums = {10, 20, 30}
local total = 0
for _, n in ipairs(nums) do
  total = total + n
end
print("sum:", total)

Zaczyna od 1 i zatrzymuje się na luce

ipairs zaczyna od indeksu 1 i działa, dopóki następny indeks ma wartość inną niż nil.

Jeśli wystąpi luka, zatrzymuje się w tym miejscu. Dlatego ipairs służy do obsługi spójnych sekwencji, a nie tabel z brakującymi pozycjami.

local t = {"a", "b", nil, "d"}
for i, v in ipairs(t) do
  print(i, v)
end

Sumowanie wartości

Częstym zadaniem jest zredukowanie listy do jednej liczby, na przykład obliczenie sumy lub maksimum.

ipairs sprawia, że taki kod jest czytelny: odwiedza się każdą wartość i dodaje ją do wyniku.

local prices = {3, 7, 2, 9}
local max = prices[1]
for _, p in ipairs(prices) do
  if p > max then max = p end
end
print("max:", max)

Budowanie nowej listy

Połączenie ipairs z table.insert pozwala przekształcić jedną sekwencję w inną.

W tym przykładzie podwajamy każdą liczbę i zapisujemy ją w nowej tabeli, zachowując kolejność oraz indeksowanie od 1.

local src = {1, 2, 3}
local doubled = {}
for _, n in ipairs(src) do
  table.insert(doubled, n * 2)
end
print(doubled[1], doubled[2], doubled[3])

ipairs a pairs

pairs odwiedza każdy klucz, w tym klucze będące łańcuchami znaków, w kolejności, której nie gwarantuje. ipairs przechodzi tylko po sekwencji liczb całkowitych 1, 2, 3... w tej kolejności.

W przypadku uporządkowanych tablic należy użyć ipairs.

local t = {"x", "y"}
t.name = "extra"
for i, v in ipairs(t) do
  print(i, v)
end

Filtrowanie za pomocą warunku

Należy użyć instrukcji if wewnątrz pętli, aby zachować tylko pasujące elementy.

Poniżej zbieramy słowa dłuższe niż trzy litery do nowej sekwencji.

local words = {"hi", "hello", "yo", "howdy"}
local long = {}
for _, w in ipairs(words) do
  if #w > 3 then table.insert(long, w) end
end
print(long[1], long[2])

Znajdowanie elementu

Aby wyszukać element, należy iterować za pomocą ipairs i zatrzymać się po jego znalezieniu. Indeks wskazuje pozycję numerowaną od 1.

Po pojawieniu się szukanego elementu wcześniejszy zwrot wykonujemy za pomocą break.

local names = {"Ann", "Bob", "Cy"}
local found = 0
for i, n in ipairs(names) do
  if n == "Bob" then found = i break end
end
print("Bob at index", found)

Zliczanie podczas iteracji

Liczbę pasujących elementów można zwiększać wewnątrz pętli.

Dzięki temu nie trzeba bezpośrednio operować indeksami, a jednocześnie można przeskanować całą sekwencję.

local marks = {5, 8, 3, 9, 6}
local passes = 0
for _, m in ipairs(marks) do
  if m >= 6 then passes = passes + 1 end
end
print("passing:", passes)

Zagnieżdżone ipairs

W przypadku tabeli tabel należy zagnieździć dwie pętle ipairs, aby odwiedzić każdą komórkę.

Pętla zewnętrzna przechodzi po wierszach, a wewnętrzna po kolumnach — wszystkie indeksy zaczynają się od 1.

local grid = {{1, 2}, {3, 4}}
for _, row in ipairs(grid) do
  for _, cell in ipairs(row) do
    print(cell)
  end
end

Szybkie sprawdzenie

Proszę przypomnieć sobie, gdzie zaczyna się i kończy działanie ipairs.

Podsumowanie

Poznali Państwo wzorzec for i, v in ipairs(t): odwiedza on elementy sekwencji w kolejności z indeksami zaczynającymi się od 1 i zatrzymuje się na pierwszej luce.

Można go używać do sumowania, filtrowania, wyszukiwania i przekształcania list. Następnie długość będzie mierzona za pomocą #, a elementy porządkowane za pomocą table.sort.

Często zadawane pytania

Czy lekcja „Iterowanie za pomocą ipairs” jest bezpłatna?

Tak — pełny tekst „Iterowanie za pomocą ipairs” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Iterowanie za pomocą ipairs”?

Przeiteruje Pan/Pani po sekwencjach w kolejności. Ćwiczysz Lua Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Iterowanie za pomocą ipairs”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Lua Academy?

Tak. Każda lekcja Lua Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tablice jako tabele
  2. Dodawanie i usuwanie elementów
  3. Iterowanie za pomocą ipairs
  4. Długość i sortowanie
← Powrót do Lua Academy