Menu
CoddyTech

Iterowanie za pomocą ipairs()

Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 2 z 54.

Chociaż pairs() działa z dowolną strukturą tabeli, Lua udostępnia specjalną funkcję o nazwie ipairs(), przeznaczoną do tabel w formie listy. Ta funkcja iteruje po tabelach w kolejności sekwencyjnej, zaczynając od indeksu 1 i kontynuując aż napotka wartość nil.

Składnia ipairs() jest podobna do składni pairs():

for index, value in ipairs(myList) do
    -- użyj tutaj index i value
end

Oto przykład listy przedmiotów zadań:

local questItems = {"Map", "Compass", "Torch", "Rope"}

for i, item in ipairs(questItems) do
    print(i .. ". " .. item)
end

Wynik:

1. Map
2. Compass
3. Torch
4. Rope

Kluczowa różnica w porównaniu z pairs() polega na tym, że ipairs() zatrzymuje się natychmiast, gdy znajdzie wartość nil, nawet jeśli są po niej kolejne elementy.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję listTasks, która przyjmuje tabelę tasks i zwraca sformatowany ciąg znaków zawierający listę wszystkich zadań wraz z numerami ich pozycji.

Użyj ipairs(), aby iterować po zadaniach w kolejności sekwencyjnej i utworzyć ciąg znaków, w którym każdy wiersz zawiera numer zadania, a następnie jego nazwę, w formacie number. task. Każde zadanie powinno znajdować się w osobnym wierszu.

Parametry:

  • tasks (tabela): tabela w stylu listy zawierająca nazwy zadań jako ciągi znaków

Zwraca: Ciąg znaków z każdym zadaniem ponumerowanym w osobnym wierszu. Format: 

1. task1
2. task2
3. task3

Spróbuj swoich sił

function listTasks(tasks)
    -- Wpisz kod tutaj
end
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator Lua online