Sadržaj
Lua To je dinamičan jezik kada su u pitanju vrste podataka i njihove vrijednosti, odnosno ne postoje definicije bilo koje vrste pri stvaranju varijable i specificiranju da je to niz, broj ili čak Booleov.Izrazi idu ruku pod ruku s vrijednostima, oni nam omogućuju izvođenje operacija s njima, koje mogu biti u rasponu od aritmetičkih, relacijskih, pa čak i uvjetnih operacija kako bismo dali dinamiku našim programima, ali prije nego prijeđemo na izraze, vidimo vrste vrijednosti koje posjedujemo u Lua i kako rade unutar jezika.
U Lua Svaka vrijednost učitava svoj tip, u kojem možemo pronaći osam različitih vrsta: nil, boolean, number, string, userdata, function, thread and table, gdje s funkcijom vrsta () možemo znati naziv vrste zadane vrijednosti. Pogledajmo jednostavan primjer kako Lua protumačiti ovo prema vrsta ():
Kako vidimo da je vrsta zadana vrijednošću koju učitava, a naznačena funkcija nam pomaže da saznamo o čemu se radi, možemo vidjeti da je čak i u posljednjem slučaju varijable H rezultat niz, a to je zato što je funkcija vrsta () je uvijek niz. Pošto smo vidjeli kako Lua protumačite vrste podataka, pogledajmo svaki od njih detaljno:
NulaOvo je vrsta vrijednosti čije je glavno svojstvo da se razlikuje od ostalih vrijednosti. Kao što smo vidjeli u prošlom vodiču, globalna varijabla ima zadanu vrijednost nula a ako ga želimo eliminirati, dodjeljujemo ovu vrijednost, čak je možemo koristiti za predstavljanje odsutnosti korisne vrijednosti.
BooleovLogičke vrijednosti, kao i u ostalim programskim jezicima, imaju dvije vrijednosti, istinitu i lažnu, ali za razliku od drugih jezika, ova vrsta podataka nema ukupnu domenu nad uvjetima jer bilo koji može predstavljati uvjet.
BrojOvaj tip podataka predstavlja i cijele brojeve i decimalne brojeve. Lua nema tip cjelobrojne vrijednosti i ne treba mu, budući da Lua može predstavljati bilo koji 32-bitni cijeli broj bez problema sa zaokruživanjem, ali najzanimljivije u vezi jezika je to što ga možemo kompajlirati za korištenje druge vrste, poput dugih cijelih brojeva ili float-a, što je vrlo korisno u slučajevima kada hardver nema podrška za decimale.
NizŽice u Lua Oni su niz znakova, vrijednosti su nepromjenjive, odnosno ne možemo promijeniti znak unutar niza. Njima upravlja automatska memorija jezika kao i ostali objekti, a dodjela niza može biti s dvostrukim ili pojedinačnim navodnicima.
StolTablični tip podataka implementira asocijativni niz, koji je niz koji se može indeksirati ne samo brojevima, već i nizovima ili bilo kojom drugom vrijednošću jezika, osim nil. Tablice nemaju fiksnu veličinu pa možemo uključiti onoliko elemenata koliko želimo i pomoću njih možemo podjednako predstavljati module, pakete i objekte. Konačno, njegovo stvaranje jednostavno je poput upotrebe zagrada {} pri inicijalizaciji stola.
ZnačajkeFunkcije u Lua imaju prilično neobično ponašanje, možemo ih spremiti u varijable, proslijediti ih kao argumente drugim funkcijama i vratiti ih čak kao rezultate, gdje Lua ove funkcije možete pozvati napisane i na samom jeziku, kao i na C.
Korisnički podaciVrsta podataka korisnički podaci omogućuje spremanje u varijable od Lua proizvoljne informacije iz C. Nema unaprijed definiranih operacija na Lua, s izuzetkom testova dodjeljivanja i jednakosti, gdje je glavna funkcija ovog tipa predstavljanje novih tipova kao takvih koje je stvorila aplikacija ili knjižnica napisana na C.
Kao što vidimo, tipovi se ne razlikuju mnogo od onoga što možemo pronaći u sadašnjim jezicima, ali ono što je sigurno jest da je jednostavnost koju ih moramo predstaviti mnogo veća, onda pogledajmo ulogu izraza i kako ih možemo koristiti s našim vrijednostima.
Aritmetičke operacije iznimno su važne za svaki program i važno je znati kako s njima postupati i koja ograničenja mogu postojati u jeziku koji koristimo. Lua podržava konvencionalne operatore na koje smo navikli: zbrajanje, oduzimanje, množenje, dijeljenje, eksponencijalni postotak i negacija.
Pogledajmo tada jednostavan kod gdje demonstriramo upotrebu nekih operatora Lua:
x = 8 + 5 y = 9 - 2 ispis (x * y% 0,01)Koristimo zbrajanje, oduzimanje i dijeljenje s 2 kao rezultat operacije množenja, da vidimo kako će odgovor tumača provesti naš kôd kroz konzolu:
POVEĆAJTE
Kao što vidimo, Lua se ne razlikuje mnogo od ostalih jezika za aritmetičke operacije, ali njezina jednostavnost za pisanje koda olakšava rukovanje za razvoj programa.Lua poput drugih jezika, daje nam relacijske operatore kao što su veći od>, manji od <, manji ili jednaki =, jednako-jednaki == i negacija ~ =. Vidimo da je jedino što se može razlikovati poricanje, ali nakon što se naviknemo, neće biti problema s njegovom upotrebom.
Svi ti operatori mogu vratiti true ili false, gdje čak možemo primijeniti i operator jednakosti i operator negacije na dvije vrijednosti. Ove usporedbe Lua radi ih na temelju vrste uz ostale čimbenike, pogledajmo u sljedećem kodu gdje se usporedba vrši na temelju istog objekta:
a = {}; a.x = 1; a.y = 0 b = {}; b.x = 1; b.y = 0 c = aAko usporedimo li isti, rezultat operacije nam daje da je a jednako c, ali da je a različito od b, to je zbog činjenice da su isti objekt. Osim toga, moramo biti vrlo oprezni pri usporedbi različitih vrsta, jer se na primjer 6 razlikuje od "6" i ako radimo nešto poput "3" <"8" Lua to će dati pogrešku budući da miješamo žice.
Logički operatori u Lua oni su i, ili ili ne. Kad se napravi usporedba pomoću ovih operatora, prvi argument će biti vraćen ako je netočan, u suprotnom će biti vraćen drugi. Pogledajmo niz primjera u interaktivnoj konzoli kako bismo demonstrirali gore spomenuto.
POVEĆAJTE
Za izvođenje spajanja u Lua je kroz dvotočku, malo mijenja sintaksu u odnosu na druge jezike, ali na isti je način prilično jednostavan, ali Lua Uvijek ide malo dalje i ako pronađe broj i postoji operacija povezivanja, pretvara je u niz, pogledajmo dva jednostavna primjera ove operacije:POVEĆAJTE
Kao što vidimo za prvi slučaj, operacija se izvodi bez ikakvih problema, a za drugi slučaj imamo brojeve, Lua automatski ih pretvara u niz. Važno je zapamtiti da su nizovi nepromjenjivi pa ova operacija uvijek stvara novi niz bez ikakvih izmjena u njegovom operandu.Konačno, imamo konstruktore, koji su izrazi koji nam omogućuju stvaranje i inicijalizaciju tablica, za koje je ova značajka jedinstvena Lua i to je jedan od njegovih najsvestranijih i najsnažnijih mehanizama. Bez problema možemo koristiti prazan konstruktor samo sa zagradama {} što će stvoriti praznu tablicu kao takvu. Oni također mogu inicijalizirati nizove ili popise, pogledajmo primjer:
dani = {"nedjelja", "ponedjeljak", "utorak", "srijeda", "četvrtak", "petak", "subota"}Ovdje stvaramo popis s danima u tjednu i ako želimo pristupiti njegovim elementima navođenjem indeksa istih koje imamo, na primjer za dobijanje četvrtka to bi bio indeks broj 5 ili nedjelja bi bio broj 1, od Lua Ne inicijalizira se na nulu kao ostali jezici, da vidimo kako izgleda kada ga pokrenemo u našoj konzoli:
Također možemo stvoriti vlastite asocijativne nizove tipa ključne vrijednosti:
niz = {x = 26, y = 67}
No, važno je da za pristup njegovim vrijednostima referencu na indeks napravimo s dvostrukim navodnicima, dobit ćemo vrijednost nil, svoju operaciju vidimo u interaktivnoj konzoli:
Ovim završavamo vodič, gdje smo to mogli vidjeti Lua proširuje svoju jednostavnost na sve rubove koji ga čine, od dinamičkih tipova kojima rukuje, jednostavnog načina dodjeljivanja, rukovanja relacijskim i logičkim operatorima, kao i pružanja iznimno korisnih alata kao što su povezivanja i konstruktori za izradu iskustvo s jezikom što ugodnije i ugodnije.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod