Iterowanie za pomocą pairs()
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 1 z 54.
pairs() umożliwia to, pozwalając przejść pętlą przez wszystkie wpisy w tabeli, niezależnie od typu kluczy.Składnia użycia pairs() w pętli for wygląda tak:for key, value in pairs(myTable) do
-- użyj tutaj key i value
endpairs() udostępnia zarówno klucz, jak i odpowiadającą mu wartość. Oznacza to, że możesz uzyskać dostęp do obu tych informacji i pracować z nimi jednocześnie.Oto praktyczny przykład z ekwipunkiem gracza:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() działa z kluczami dowolnego typu, w tym ciągami znaków, liczbami, a nawet innymi tabelami.Praca z ciągami znakówW Lua możesz łączyć ze sobą ciągi znaków za pomocą operatora konkatenacji, który składa się z dwóch kropek (..). Na przykład "Hello" .. " " .. "World" daje w wyniku "Hello World".Jeśli chcesz sformatować tekst w kilku wierszach, możesz użyć znaku ucieczki nowej linii "\n". Gdy Lua napotka "\n" w ciągu znaków, potraktuje go jako polecenie przejścia do następnego wiersza.Na przykład print("Line 1\nLine 2") wyświetli:Line 1
Line 2Wyzwanie
ŁatwyNapisz funkcję printInventory, która przyjmuje tabelę inventory i zwraca sformatowany ciąg znaków zawierający wszystkie elementy i ich ilości.
Użyj pairs(), aby iterować po tabeli inventory i utworzyć ciąg znaków, w którym każdy wiersz zawiera nazwę elementu, a po niej jego ilość w formacie item: quantity. Każdy element powinien znajdować się w osobnym wierszu.
Aby umieścić każdy element w osobnym wierszu, użyj znaku nowej linii "\n" między wpisami. Na przykład "apple: 5\nbanana: 3" wyświetli się w dwóch osobnych wierszach. Uważaj, aby nie dodawać "\n" przed pierwszym elementem: dodawaj go tylko między elementami.
Parametry:
inventory(table): Tabela w stylu słownika, w której kluczami są nazwy elementów (ciągi znaków), a wartościami ich ilości (liczby)
Zwraca: Ciąg znaków zawierający każdy element i jego ilość w osobnym wierszu, oddzielone "\n". Przykładowy wynik dla {apple=5, banana=3}:apple: 5banana: 3
Spróbuj swoich sił
function printInventory(inventory)
-- Aby sformatować wynik, możesz łączyć ciągi znaków za pomocą operatora '..'.
-- Aby dodać nowy wiersz, użyj znaku specjalnego '\n'.
-- Może być potrzebny sposób śledzenia, czy dodajesz pierwszy element, czy kolejny,
-- aby zdecydować, czy przed elementem dodać znak nowego wiersza.
-- Wpisz kod tutaj
endTa 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