W naszych skryptach nie raz, nie dwa razy będziemy mieli potrzebę przechowania jakichś wartości, czy to liczb czy napisów, i korzystania z nich w różnych miejscach. Do tego właśnie posłużą nam zmienne. Zmienna to miejsce w pamięci w którym jest przechowywana jej wartość i do której można się odnieść przez jej identyfikator (nazwę). Lua jest językiem z dynamicznym typowaniem, oznacza to że nie przypisuje na sztywno typu zmiennej. W praktyce oznacza to że możemy przykładowo potraktować zmienną liczbową jako tekst, i na odwrót (o ile jest to możliwe).
1. Typy danych
Mimo że Lua w większości przypadków średnio przywiązuje wagę do typu zmiennej to jednak trzeba je znać.
Rozróżniamy 8 podstawowych typów danych:
- nil – typ posiadający tylko jedną wartość, nil. Oznacza tylko tyle że dana zmienna jest pusta, lub, jak kto woli, nie istnieje.
- boolean - typ logiczny, reprezentują go 2 wartości true (prawda) i false (fałsz).
- number – jak sama nazwa wskazuje, typ liczbowy, zarówno dla liczb całkowitych jak i rzeczywistych. Liczby możemy podawać w różnych postaciach, dziesiętnej (12431, 3.12), szesnastkowej (0×4134), wykładniczej (3.32e-2, 2.2e10, 10e+15)
- string - a inaczej łańcuch znaków. String możemy zapisać na 3 sposoby:
- „w cudzysłowu”
- ‘w apostrofach’
- [[i wielolinkjkowe stringi
pomiędzy nawiasami kwadratowymi]]
- table - tablice, pozwalają przechowywać wiele wartości pod jedną nazwą. Więcej o nich będzie w kolejnych częściach.
- function - funkcje, o nich też będzie później
- userdata, thread - kolejne typy które na razie nas nie interesują :)
2. Funkcja type()
type() jest standardową funkcją pozwalającą sprawdzić typ zmiennej/wartości. Myślę że najlepiej zilustruje to przykład:
print(type(1))
print(type("Lancuch znakow"))
print(type(true))
print(type(nil))
print(type(type)) --funkcja to też typ!
Polecam samodzielnie uruchomić i sprawdzić wynik.
3. Użycie zmiennych
No tak, już trzeci punkt a my jeszcze nie wiemy jak wygląda zmienna i jak jej używać. Więc do rzeczy: jedyne co musimy zrobić to zainicjalizować zmienną, a nie znaczy to nic innego jak przypisać do niej jakąś wartość używając znaku równości (=).
Potem możemy ją np. wypisać. Kolejny raz zademonstruję to na przykładzie który polecam uruchomić:
a = 5 --przypisujemy do zmienej a wartość 5 b = "Jakis tekst" --przypisujemy do zmiennej b łańcuch "Jakis tekst" print(a) --wypisujemy wartość zmiennej a a = 10 print(a) --wypisujemy wartość zmiennej a print(b) --wypisujemy wartość zmiennej b print(c) --a co to? print(type(a)) --wypisujemy TYP wartości zmiennej a print(type(b)) --wypisujemy TYP wartości zmiennej b
Wydaje mi się że nie trzeba tego tłumaczyć, wszystko sprowadza się do przypisania wartości do identyfikatora (nazwy) zmiennej. Jednak wkradła się pewna niejasność. Mianowicie, o co chodzi w print(c)? Przecież nie przypisaliśmy do żadnej wartości więc jak możemy ją wypisać? A no możemy, niezainicjalizowana zmienna nie ma wartości, a brak wartości, jak wiemy z poprzedniego akapitu oznaczany jest przez nil, i to właśnie zostanie mam wypisane.
4. Interakcja z użytkownikiem
No właśnie, a może by tak uczynić skrypt atrakcyjniejszym, pobrać dane od użytkownika i coś z nimi zrobić?;)
Do wczytywania ze standardowego wejścia służy funkcja io.read(). Zwraca ona to, co napisze użytkownik. Oczywiście, wyjaśnienie na przykładzie do uruchomienia:
print("Jak sie nazywasz?")
imie = io.read() --przypisanie do zmiennej imie tekstu pobranego ze std. wejścia
print("Witaj "..imie.."!") --wypisanie imienia
Co się dzieje? Pierwszej linii oczywiście nie trzeba tłumaczyć, gorzej z kolejnymi. W drugiej lini do zmiennej imie przypisujemy wartość którą zwróci nam funkcja io.read() (o funkcjach i wartościach- przezeń zwracanych będzie w kolejnych lekcjach). Funkcja ta zatrzymuje działanie skryptu do czasu gdy użytkownik nie wpisze tekstu (zakończonego znakiem nowej linii). Trzecia linia wygląda znajomo… no prawie. Pojawiło się w niej coś nowego, mianowicie operator łączenia stringów: nic skomplikowanego, łączymy dwa stringi za pomocą „..”.
5. Podsumowanie
Po dzisiejszej lekcji wiemy już nieco więcej:
- Znamy podstawowe typy danych w Lua
- Umiemy używać zmiennych (przypisywać wartości, wypisywać, sprawdzać typ)
- Umiemy pobrać dane od użytkownika
Polecam pobawić się tym żeby dokładnie przyswoić sobie informacje. Będą nam one potrzebne podczas przerabiania kolejnych części kursu.

Dawaj kolejną część xdd
print(„podaj liczbe a „)
a = io.read()
print(„podaj liczbe b „)
b = io.read()
c = a + b
print(a..”+”..b..”=”..c)
;d
Czekamy na następne części :)