Sadržaj
U prošlim smo vodičima vidjeli kako Lua omogućuje dinamičko rukovanje i vrijednostima i tipovima, uvijek se ističući svojom jednostavnošću i svestranošću pri izvođenju ovih operacija.Ali to nije sve Lua nudi u smislu jednostavnosti, konvencionalno podržava deklaracije koje možemo pronaći u jezicima kao u C ili PascalTamo gdje ove deklaracije podjednako uključuju dodjele i strukture upravljanja, možemo čak naići na neke nekonvencionalne načine poput višestrukih dodjela i lokalnih deklaracija.
Zadaci u Lua Izuzetno su jednostavni i rade na promjeni vrijednosti varijable u određeno vrijeme unutar našeg programa, pogledajmo jednostavan primjer pomoću interaktivne konzole Lua, koje možemo unijeti postavljanjem rezervirane riječi lua U terminalu:
Lua čak možete prilagoditi broj vrijednosti za broj prisutnih varijabli, na primjer, ako je popis vrijednosti manji od popisa varijabli, dodatnim varijablama daje se tip vrijednosti nula prema zadanim postavkama kao njegove vrijednosti, pogledajmo primjer ovog procesa:
Osim globalnih varijabli, Lua Podržava lokalne varijable koje, za razliku od globalnih, imaju ograničen opseg, koji ovisi o bloku u kojem su deklarirane, pogledajmo kako deklariramo lokalnu varijablu:
x = 10 lokalno i = 1 dok i <= x radi lokalno x = i * 2 ispis (x) i = i + 1 kraj ako je i> 20 tada lokalni xx = 20 ispis (x + 2) else ispis (x) kraj ispis (x)Izvršimo li isti u našem terminalu, vidjet ćemo kako rezultat možda nije ono što očekujemo, a to je zato što imamo različite blokove u kojima koristimo varijable, pogledajmo rezultat:
do local var1 = 16 local var2 = var1 + 20 x = 5 y = x + var1 end - Ovdje završava opseg var1 i var2 print (x, y) print (var1, var2)Kada ga izvršimo u našem terminalu vidjet ćemo da su varijable x i y prikazane bez problema jer su globalne, ali za var1 i var2 njihov opseg završava blokom do-end, da vidimo:
Upravljačke struktureKao i ostali programski jezici, Lua pruža nam skup kontrolnih struktura koje možemo koristiti u našim programima, koristeći dobro poznate ako za rješavanje uvjeta i dok, ponoviti Y za za iterativne petlje, gdje osim ponoviti koji ima izričit terminator do a ostale koje završavaju sa kraj.
Kao i u većini programskih jezika, deklaracija ako provjerava stanje i izvršava dio zatim ili dio drugo, gdje potonji mogu biti izborni, pogledajmo skup ovih uvjeta kako se vidi u našim programima:
ako je var1 <0 tada je var1 = 0 kraj ako je var1 max linija onda pokažite () linije = 0 krajOvdje imamo tri vrste operacija, osnovnu sa zatim, pomoću return za vraćanje vrijednosti prema uvjetu i nešto potpunijem komadu koda koji poziva funkciju. Osim ovoga možemo napisati ako ugniježđeno pomoću inače, što nas spašava od upotrebe višestrukih završava, da vidimo kako to izgleda:
ako je operacija == " +" tada je rezultat = a + b elseif operacija == " -" tada rezultat = a - b elseif operacija == " *" tada je rezultat = a * b elseif operacija == "/" tada je rezultat = a / b else error ("Invalid operation") endVažno je napomenuti da to nije samo optimalnije nego je i potrebno budući da Lua nema deklaracije tipa sklopka pa će ova vrsta ugniježđenih uvjeta biti prilično česta u našim programima.
Kao i u drugim jezicima, Lua prvo procijeniti stanje dok, ako je uvjet netočan, petlja završava i u protivnom se izvršavaju sljedeći redovi koda i proces se ponavlja sve dok uvjet nije lažan, pogledajmo jednostavan primjer koji to ilustrira:
lokalni i = 1 dok var1 [i] do ispis (var1 [i]) i = i + 1 kraj
Ova izjava za razliku od dok dopušta nam da ponovimo kôd unutar uvjeta dok ne postane istinit, gdje se čak i ovaj kôd može izvršiti barem jednom budući da se evaluacija uvjeta vrši na kraju, pogledajmo primjer:
ponoviti redak = os.read () dok redak ~ = "" ispis (redak)
Glede iterativnih ciklusa za, Lua ima dvije njegove varijante, za numeričke i općenito za. Pogledajmo sintaksu numeričkog za:
za var = exp1, exp2, exp3 do krajaOva će petlja izvršiti nešto za svaku vrijednost var iz exp1 do exp2 koristeći exp3 kao vrijednost za povećanje var ili smanjenje, ako ga ne uključimo Lua prema zadanim postavkama pretpostavlja da ide jedan po jedan, pogledajmo detaljniji primjer ovih ciklusa:
za var = 1, f (x) kraj ispisa (var) kraj za var2 = 10,1, -1 do ispis (var2) krajKako vidimo da je njegova primjena vrlo jednostavna i omogućuje nam implementaciju korisnih iterativnih ciklusa u naše programe, sada pogledajmo sintaksu za općenito za:
za i, var u ipairs (niz) do ispis (var) krajOvaj ciklus koristi funkciju koju nam daje Lua poziv ipara, koji je iterator polja, gdje za svaku iteraciju i uzima indeks, dok var dobiva vrijednost povezanu s tim indeksom.
Kao što vidimo unutarnje izjave Lua Ne razlikuju se mnogo od drugih jezika, međutim jezik dodaje tu dodatnu jednostavnost koja nam omogućuje mnogo brže učenje sintakse i mnogo učinkovitiju uporabu. Ovim smo završili ovaj vodič, gdje smo naučili zadatke i kontrolne strukture unutar Lua, čime se dodaje još jedan sloj znanja kada je u pitanju ovaj jednostavan, ali moćan jezik.