Tworzenie tabel i unpack()
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 6 z 54.
unpack(). Są one szczególnie przydatne podczas pracy z funkcjami, które wymagają elastycznej obsługi argumentów.Możesz zebrać wiele wartości w tabeli przypominającej listę, używając składni konstruktora tabeli z nawiasami klamrowymi. Zbiera to wszystkie wartości w jedną strukturę tabeli.local args = {10, 20, 30}
print(args[1]) -- Wynik: 10
print(#args) -- Wynik: 3unpack() robi coś przeciwnego. Przyjmuje tablicę w formie listy i zwraca wszystkie jej elementy jako osobne wartości. Dzięki temu możesz przekazać zawartość tablicy jako oddzielne argumenty funkcji.Ważne: Chociaż w nowszych wersjach Lua (5.2+) tę funkcję przeniesiono do table.unpack(), to środowisko działa na Lua 5.1, więc musisz używać globalnej funkcji unpack().local numbers = {5, 10, 15}
print(unpack(numbers)) -- Wynik: 5 10 15Wyzwanie
ŁatwyNapisz funkcję forwardArguments, która przyjmuje trzy liczby: a, b i c, a następnie zwraca ich sumę, tworząc tablicę i używając unpack().
Utwórz tablicę zawierającą trzy argumenty za pomocą składni {a, b, c}, a następnie rozpakuj ją i przekaż wartości innej funkcji, która oblicza ich sumę.
Uwaga: Użyj globalnej funkcji unpack() zamiast table.unpack(), aby zapewnić zgodność z tym środowiskiem.
Logika:
- Użyj
{a, b, c}, aby utworzyć tablicę zawierającą wszystkie trzy argumenty - Utwórz osobną funkcję o nazwie
sum, która przyjmuje trzy parametry i zwraca ich sumę - Użyj
unpack(), aby przekazać wartości z tablicy do funkcjisum - Zwróć wynik funkcji
sum
Parametry:
a(liczba): Pierwsza liczbab(liczba): Druga liczbac(liczba): Trzecia liczba
Zwraca: Sumę wszystkich trzech liczb (liczba)
Spróbuj swoich sił
function forwardArguments(a, b, c)
-- Utwórz osobną funkcję obliczającą sumę
-- Utwórz tablicę zawierającą wszystkie trzy argumenty
-- Rozpakuj tablicę i przekaż wartości do funkcji obliczającej sumę
-- Wskazówka: Użyj globalnej funkcji 'unpack', aby rozpakować argumenty z tablicy
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