pairs() a ipairs()
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 3 z 54.
Skoro znasz już zarówno pairs(), jak i ipairs(), warto zrozumieć, kiedy używać każdej z tych funkcji. Wybór zależy całkowicie od struktury twojej tablicy i tego, co chcesz osiągnąć.
Używaj ipairs(), gdy masz tablicę w formie listy z kolejnymi kluczami całkowitymi zaczynającymi się od 1. Przetwarza elementy po kolei i zatrzymuje się przy pierwszej wartości nil, dzięki czemu doskonale nadaje się do tablic, w których kolejność ma znaczenie.
Użyj pairs(), gdy twoja tablica ma klucze tekstowe, klucze różnych typów lub gdy chcesz uzyskać dostęp do wszystkich wpisów niezależnie od luk. Funkcja ta iteruje po każdej parze klucz-wartość w tablicy, bez określonej kolejności.
Rozważmy tę mieszaną tabelę:
local gameData = {
"Level 1",
"Level 2",
"Level 3",
currentLevel = 2,
playerName = "Hero"
}Jeśli użyjesz ipairs(), zobaczysz tylko trzy ciągi poziomów. Jeśli użyjesz pairs(), zobaczysz wszystkie pięć wpisów, w tym klucze będące ciągami znaków.
Wyzwanie
ŁatwyNapisz funkcję countSequentialItems, która przyjmuje tablicę data i zwraca liczbę elementów z kolejnymi kluczami całkowitymi.
Użyj ipairs(), aby policzyć, ile elementów znajduje się w sekwencyjnej części tablicy (zaczynając od indeksu 1 i kończąc na pierwszym nil). Pomoże ci to zrozumieć różnicę między ipairs() a pairs() podczas pracy z tablicami mieszanymi.
Parametry:
data(table): Tablica mieszana zawierająca zarówno kolejne klucze całkowite, jak i klucze tekstowe
Zwraca: Liczbę elementów sekwencyjnych (number)
Spróbuj swoich sił
function countSequentialItems(data)
-- Wpisz kod tutaj
end
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
1Zaawansowane iterowanie po tabelach
Iterowanie za pomocą pairs()Iterowanie za pomocą ipairs()pairs() a ipairs()Powtórka — karta postaci2Więcej funkcji biblioteki table
table.concat()Tworzenie tabel i unpack()table.sort()Sortowanie niestandardowe za pomocą funkcjiPodsumowanie — tablica najlepszych wyników5Projekt: silnik tekstowej gry przygodowej
Konfiguracja projektu: pokójŁączenie pokoiPoćwicz samodzielnie: Kompilator Lua online