Lua - zmienne
Niedawno napisałem ot taki prosty poradniczek, który moim zdaniem zawiera cały materiał podstawowego i jednego z najważniejszych zagadnień Lua, czyli zmiennych. W poradniku nie rozwodzę się zbytnio o czymkolwiek innym, ale w niedalekiej przyszłości mam zamiar stworzyć kolejne części kursu. Tak więc zapraszam do lektury!
Witam w pierwszej części kursu języka programowania Lua. Na początek zajmiemy się zmiennymi. Czym jest zmienna? No cóż, nie chcę wprowadzać na początek za dużo teorii i mieszać wam w głowach, więc zastosuję przykład. Dostajemy w szkole kartkę, na której jest zapisany pewien tekst. Za parę dni mamy go odczytać na apelu. Wyobraź sobie, że zawartość kartki zapisujemy w pamięci komputera i jest ona zachowana aż do skończenia działania skryptu lub programu. W Lua wyróżniamy dwa rodzaje zmiennych: lokalne i globalne. Różnią się przede wszystkim tym, że zasięg zmiennych lokalnych wychodzi poza jedną funkcję. Zmienne globalne deklarowane są wewnątrz funkcji i ich zasięg nie wykracza poza nią(nie mam na myśli zwracanej przez funkcję wartości, o której opowiem kiedy indziej). Warto dodać także, że zmienne lokalne zajmują mniej miejsca w pamięci i ich wywoływanie trwa krócej.
Teraz przejdźmy do praktyki:
Kod:
local a = 5 -- deklaracja zmiennej lokalnej i przypisanie jej wartości liczbowej.
b = "Hello world." -- deklaracja zmiennej globalnej i przypisanie jej wartości łańcuchowej.
c = math.random(100) -- deklaracja zmiennej globalnej i przypisanie jej funkcji (o których powiem w następnych rozdziałach).
Jeżeli wrzucisz ten kod do jakiegokolwiek interpretatora to nic nie wyświetli. Dlaczego? Odpowiedź jest prosta - zadeklarowaliśmy tylko i wyłącznie zmienne, nie wydaliśmy interpretatorowi żadnej instrukcji. Aby interpretator pokazał nasze zmienne i jednocześnie wykonał czynność wystarczy dodać na końcu kodu:
Kod:
print(a,b,c)
Interpretator wyświetli: 5, Hello world. oraz liczbę z zakresu od 1 do 100 (więcej o tej funkcji w następnych rozdziałach).
Do czego służy instrukcja print? Jest to instrukcja, która wyświetla na ekranie dany ciąg znaków lub wartość danych zmiennych. Może ona zawierać jeden, bądź dużo więcej parametrów. Dla objaśnienia parametr, jest to wartość, którą "wprowadzamy" do funkcji, a funkcja ma za zadanie wykonać na niej określone zadanie. Przykładem zastosowanie funkcji print może być:
Kod:
print(math.random(100),5,"Hello world.",9.1 * 6)
Zmienne mogą być także parametrami funkcji. Zademonstruję teraz krótki kod, którego nie musicie teraz rozumieć, ale ma za zadanie zobrazować wykorzystanie zmiennych jako parametry funkcji.
Kod:
function pomnoz(liczba) -- deklaracja funkcji o parametrze 'liczba'
return liczba * 5
end
a = 5 -- deklaracja zmiennej globalnej o wartości 5
print(pomnoz(a)) -- wyświetlenie działania funkcji o parametrze 'liczba', którego wartość to 5
W przykładzie zmienna globalna o wartości 5 została wprowadzona do funkcji 'pomnoz' jako parametr 'liczba'.
Kolejną ciekawą rzeczą jest wartość nil. Jednym słowem jest to nic. Nil jest czymś innym niż zero, informuje nas, że dana zmienna nie ma przypisanej wartości, lub została właśnie przypisana jako nil. A teraz podam mały przykład:
Kod:
function sprawdz(zmienna)
if zmienna ~= nil then
return true
else
return false
end
end
local a = nil
print(sprawdz(a) and "true" or "false")
Kod sprawdza czy dana zmienna (w tym przypadku 'a') ma wartość nil i zwraca prawdę lub fałsz.
Warto również wspomnieć o ograniczeniu w nazewnictwie zmiennych. Nazwa zmiennej nie może być określeniem już wbudowanego procesu typu nazwa pętli, czy 'return'.
Ostatnią rzecz, którą omówię w tym rozdziale będzie zmiana wartości zmiennych. Deklarując zmienną nadajemy jej jakąś wartość, może to być ciąg znaków, liczba, funkcja lub po prostu nic. Jednak w późniejszej części kodu może zajdzie potrzeba zmiany wartości zmiennej. Najlepiej przedstawić to na prostym przykładzie:
Kod:
local a = 1
print(a)
a = 2
print(a)
Na początku kodu deklarujemy zmienną lokalną 'a' i nadajemy jej wartość 1. Następnie wyświetlamy wartość tej zmiennej. Teraz zmieniamy jej wartość i ponownie wyświetlamy.
Mam nadzieję, że materiał jest zrozumiały. Zapraszam na kolejne lekcje już wkrótce.
Pozdrawiam,
Tibionauta/Simon