Menu
Coddy logo textTech

Lua Cheat Sheet: ściąga z Lua

Ostatnia aktualizacja

Hello World i uruchamianie kodu

Lua jest minimalistyczna: uruchamia się nawet pojedyncza instrukcja.

OperacjaSkładnia
Wypisanie liniiprint("Hello, World!")
Wypisanie kilku wartościprint("x", 1, true)
Zapis bez nowej liniiio.write("Hi")
Komentarz-- this is a comment
Komentarz wieloliniowy--[[ ... ]]
Łączenie łańcuchówprint("Hi " .. name)
Uruchomienie plikulua app.lua
Powłoka interaktywnalua

Zmienne i typy

Zmienne są domyślnie globalne; lokalne deklarujesz słowem local.

OperacjaSkładnia
Zmienna lokalnalocal age = 30
Zmienna globalnacount = 0
Wielokrotne przypisanielocal a, b = 1, 2
Osiem typównil, boolean, number, string, table, function, userdata, thread
Nil / wartości logicznenil, true, false
Sprawdzenie typutype(x) zwraca "number"
Zamiana na liczbętonumber("42")
Zamiana na łańcuchtostring(42)

Łańcuchy znaków

Łańcuchy są niemutowalne; działają cudzysłowy pojedyncze i podwójne.

OperacjaSkładnia
Długość#s lub string.len(s)
Łączenies1 .. s2
Wielkie / małe literys:upper(), s:lower()
Podłańcuchs:sub(1, 3)
Wyszukanie podłańcuchas:find("ell")
Zamiana (gsub)s:gsub("a", "b")
Formatowaniestring.format("%05d", 42)
Długi łańcuch[[ multi\nline ]]

Tabele (podstawowa struktura danych)

Tabele to jedyny typ strukturalny w Lua: działają jak tablice, mapy i obiekty.

OperacjaSkładnia
Pusta tabelalocal t = {}
W stylu tablicy (od 1)local t = {10, 20, 30}
Dostęp do elementu tablicyt[1] (pierwszy element)
Tabela w stylu mapylocal u = {name = "Ada", age = 30}
Dostęp do wartości mapyu.name lub u["name"]
Ustawienie wartościt[4] = 40, u.email = "a@x.com"
Długość części tablicowej#t
Iteracja po tablicy (ipairs)for i, v in ipairs(t) do ... end
Iteracja po wszystkich kluczach (pairs)for k, v in pairs(u) do ... end
Zagnieżdżona tabelalocal m = {a = {1, 2}}

Sterowanie przepływem

Bloki zamyka się słowem end; fałszywe są tylko nil i false.

OperacjaSkładnia
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
Operatory logiczneand, or, not
Pętla for liczbowafor i = 1, 10 do ... end
For z krokiemfor i = 10, 1, -1 do ... end
Pętla whilewhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
Operator różnościif a ~= b then ... end

Funkcje

Funkcje są wartościami pierwszej klasy i mogą zwracać wiele wyników.

OperacjaSkładnia
Definicja funkcjifunction add(a, b) return a + b end
Funkcja lokalnalocal function square(x) return x * x end
Funkcja anonimowalocal f = function(x) return x * 2 end
Wiele wartości zwracanychfunction bounds() return 1, 10 end
Odebranie wielu wynikówlocal lo, hi = bounds()
Funkcja o zmiennej liczbie argumentówfunction sum(...) ... end
Zebranie argumentówlocal args = {...}
Metoda (składnia z dwukropkiem)function obj:greet() ... end

Biblioteka string

Popularne funkcje z biblioteki string (można je wywołać jako s:fn()).

FunkcjaCo robi
string.len(s)Długość łańcucha
string.sub(s, i, j)Podłańcuch od indeksu i do j
string.upper(s)Kopia wielkimi literami
string.rep(s, n)Powtarza łańcuch n razy
string.find(s, p)Szuka wzorca, zwraca początek i koniec
string.match(s, p)Zwraca pierwsze dopasowanie wzorca
string.gsub(s, p, r)Zastępuje wszystkie dopasowania wzorca
string.format(fmt, ...)Formatuje wartości w łańcuch

Biblioteki table i math

Pomocnicze funkcje do pracy z tabelami w stylu tablic i z liczbami.

FunkcjaCo robi
table.insert(t, v)Dodaje wartość na końcu
table.insert(t, i, v)Wstawia v na pozycji i
table.remove(t, i)Usuwa i zwraca element z pozycji i
table.concat(t, ", ")Łączy elementy w łańcuch
table.sort(t)Sortuje tablicę w miejscu
math.floor(x) / math.ceil(x)Zaokrąglenie w dół / w górę
math.max(...) / math.min(...)Największy / najmniejszy argument
math.random(1, 6)Losowa liczba całkowita z zakresu

Metatabele (w skrócie)

Metatabele pozwalają zmienić zachowanie tabel: operatory, indeksowanie i nie tylko.

OperacjaSkładnia
Ustawienie metatabelisetmetatable(t, mt)
Pobranie metatabeligetmetatable(t)
Wartości dla brakujących kluczymt.__index = defaults
Wartość domyślna przez funkcjęmt.__index = function(t, k) ... end
Własne dodawaniemt.__add = function(a, b) ... end
Własne tostringmt.__tostring = function(t) ... end
OOP oparte na prototypachmt.__index = ClassTable

Najczęściej używana składnia Lua na jednej stronie. Ten Lua cheat sheet to szybka ściąga z podstaw języka: zmienne i typy, łańcuchy, sterowanie przepływem, funkcje oraz tabele, które są jedyną, elastyczną strukturą danych w Lua, a do tego krótki przegląd bibliotek standardowych i metatabel.

Wszystko tutaj to standardowa Lua, która działa w zwykłym interpreterze. Skopiuj to, czego potrzebujesz, albo uruchom każdy fragment w edytorze online Lua, bez instalacji.

Lua cheat sheet: najczęstsze pytania

Czy ten Lua cheat sheet jest darmowy?
Tak. Ta ściąga z Lua jest całkowicie darmowa i nie wymaga rejestracji. Dodaj ją do zakładek i wracaj, gdy potrzebujesz sprawdzić operację na tabeli, funkcję łańcuchów albo słowo kluczowe sterowania przepływem.
Jak tabela w Lua może być jednocześnie tablicą i mapą?
Tabela to po prostu zbiór par klucz-wartość, a kluczem może być dowolna wartość. Gdy używasz kolejnych kluczy całkowitych od 1 ({10, 20, 30}), tabela zachowuje się jak tablica; gdy używasz kluczy tekstowych ({name = "Ada"}), zachowuje się jak mapa. Możesz nawet łączyć oba style w jednej tabeli. Dlatego Lua potrzebuje tylko jednego typu strukturalnego: tabela obsługuje tablice, słowniki, zbiory i obiekty.
Dlaczego Lua indeksuje od 1?
Z konwencji i z założenia tablice w Lua zaczynają się od indeksu 1, a nie 0, więc t[1] to pierwszy element, a #t to liczba elementów. Operator długości # i funkcje biblioteczne, takie jak table.insert i ipairs, zakładają tę konwencję, więc trzymanie się jej sprawia, że kod z tablicami działa zgodnie z oczekiwaniami.
Czy mogę ćwiczyć Lua online?
Tak. Otwórz edytor online Lua, aby uruchomić dowolny fragment z tej ściągi w przeglądarce, bez instalowania Lua. Gdy chcesz uczyć się bardziej systematycznie, darmowy interaktywny kurs Lua w Coddy prowadzi krok po kroku od zmiennych i tabel do funkcji i metatabel.
Czy ta ściąga nadaje się dla początkujących?
Tak. Jest ułożona od najczęstszych tematów (zmienne, łańcuchy, tabele, sterowanie przepływem) do bardziej zaawansowanych (biblioteki standardowe i metatabele), więc górnych sekcji możesz używać od pierwszego dnia, a resztę poznawać z czasem.
Ilustracja języków programowania w Coddy

Naucz się języka Lua z Coddy

ZACZNIJ