Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Sigurnost
  • Lua je komandni programski jezik. Lua za petlje

Lua je komandni programski jezik. Lua za petlje

Lua(od portugalskog za "mjesec") je interpretirani programski jezik koji je razvila Grupa za tehnologiju kompjuterske grafike Papinskog katoličkog univerziteta u Rio de Žaneiru u Brazilu. je besplatan, sa otvorenim kodom izvorni tekstovi u C jeziku. Po svojim mogućnostima i implementaciji najbliži je JavaScript-u, ali je, sa moje tačke gledišta, fleksibilniji i ima šire mogućnosti. Unatoč činjenici da Lua nema koncepte kao što su "klasa" ili "objekat", na njegovoj osnovi je sasvim moguće izgraditi OOP programe zasnovane na metatabelama, koje vam također omogućavaju implementaciju, na primjer, preopterećenja operacija.

U ovom tutorijalu želim vam dati neke od većine opće informacije o ovom jeziku, a u narednim lekcijama ću vam pokazati u praksi kako možete koristiti jezik Lua za rješavanje problema programiranja igara.

Lua istorija

Kao što sam već rekao, Lua je razvijen od strane jednog od odjeljenja Katoličkog univerziteta u Rio de Janeiru. Desilo se to davne 1993. godine. Ali od tog trenutka, nove verzije Lua-a su se aktivno razvijale i povremeno objavljivale - postale su praktičnije, brže, funkcionalnije. V ovog trenutka stabilna verzija Lua je 5.1, međutim alfa verzija 5.2 je već dostupna.

Lua tipovi

V Lua postoji osam osnovnih tipova podataka:

  • nula (nedefinirano)
  • boolean (boolean)
  • broj (numerički)
  • niz (žica)
  • funkcija (funkcija)
  • korisnički podaci (korisnički podaci)
  • thread
  • sto (sto)

Lua je dinamički definisan jezik. Bilo koja varijabla u Lua može sadržavati vrijednosti bilo kojeg od gore navedenih tipova. Sve vrijednosti u Lua mogu se pohraniti u varijable, koristiti kao argumenti prilikom pozivanja funkcija i vratiti kao rezultat izvršenja funkcije.

Lua tables

Stolova je najviše važan tip podaci u Lua-tabelama su osnova za pohranjivanje i korištenje prilagođeni tipovi podaci: strukture, nizovi, liste, skupovi, itd. implementirani su u Lua kroz tabele. Tabela u Lua-i je skup parova [Ključ, Vrijednost], gdje se kao ključ može koristiti vrijednost bilo kojeg tipa osim nil.

Lua uređaj

Kao i mnogi interpretirani programski jezici, implementacija Lua ima zaseban kompajler bajtkoda od izvora do izvršnog i virtuelnu mašinu za izvršavanje generisanog bajtkoda. U slučaju Lua, bajt kod nisu mašinske instrukcije, već “ virtuelni procesor Lua ”sa više registara, što poboljšava efikasnost izvršenja. Lua virtuelna mašina takođe koristi princip sakupljanja smeća (slično kao Java ili .NET), što omogućava programeru da ne brine o alokaciji/uklanjanju memorije – to radi sam tumač.

Za kritične zadatke postoji Lua: kompajler, koji vam omogućava da dobijete brži kod.

Gdje se koristi Lua

Lua je, tokom godina svog postojanja i razvoja, osvojila srca mnogih programera softvera i danas se koristi u širokom spektru programskih područja: skriptiranje kompjuterske igrice(Crysis, Far cry, Diablo 3, S.T.A.L.K.E.R.), na serverima MMO igara (World of Warcraft, Allods Online), u grafičkim paketima (na primjer, u Adobe Photoshop Lightroom), u igricama i dizajnerima igara (UMJESTO), za programiranje GUI-a nekih aplikacija (isti Photoshop Lightroom) i u mnogim drugim zadacima.

Lua Documentation

Općenito, na netu postoji mnogo dokumentacije, kao i primjera korištenja. Stoga, neću ulaziti duboko u ovu temu. Reći ću samo da vam mogu savjetovati da pročitate

Uvod

Ovaj vodič je namijenjen onima s ograničenim iskustvom s LUA. Pokriti ćemo osnove kodiranja, gradivne blokove za stvaranje složenijeg koda i dati neke primjere. Priručnik je napisan tako da se odmah može primijeniti. Stoga biste trebali otvoriti Tabletop Simulator i svoj LUA editor da biste pratili.

Ovo je prvi tutorijal u ovoj seriji. Drugi je Learning Lua More. Treći je set korisne funkcije pod nazivom Learning Lua Functions.

Prije prvog pritiska na tipku

Prvo, toplo bih preporučio instaliranje Atoma ako namjeravate skriptirati u Tabletop Simulatoru. On zna koje funkcije se mogu koristiti i uvoziće/izvoziće kod u/sa TTS-a.

Zatim morate dodati u markere. Često ćete se povezivati ​​na ovu stranicu kada počnete pisati svoje skripte. Ovdje ćete naći posebne funkcije u Tabletop Simulatoru i kako oni rade. Najčešće ćete koristiti stranice API-ja i Object najmanje, po mom iskustvu.

Priprema

Kada spremite svoje skripte na Tabletop, on će koristiti vaše zadnje spremanje a zatim učitajte skripte u njega. Stoga, za bilo koju skriptu koju namjeravate napisati, morat ćete uraditi sljedeće:

  • Pripremite sto kako želite.
  • Sačuvajte tabelu.
  • Učitajte sto.
Za ovu vježbu uzmite prazan sto i kreirajte dva objekta (koristio sam kvadratni blok i pravokutni blok) i crveni dama.

Pritisnite ga ponovo jer naravno hoćete.

DODATNI KREDIT: Kada kreirate tabele, postoji nekoliko načina da to uradite. Metoda koja je ovdje korištena je pružanje vizualne jasnoće. Međutim, način kreiranja parametara gumba kao što je ovaj zauzima puno prostora ako imate puno dugmadi. Više volim da dizajniram svoje stolove na takav način da uštedim prostor, ali da ne prelazim desnu marginu. Koristeći naš primjer, napravio bih tablicu parametara poput ove:

button_parameters = (click_function = "buttonClicked", function_owner = nula, label = "Pritisni me", pozicija = (0,0.8,0), rotacija = (0,0,0), širina = 500, visina = 500, veličina fonta = 100 )

DODATNI KREDIT: Ovo je savršeno vrijeme za početak igranja različite stvari koje možete raditi sa objektima. Idite na stranicu Objekt u bazi znanja i isprobajte materijal. Premještajte predmete, natjerajte ih da mijenjaju položaje, mijenjajte njihove boje, što god mislite.

DODATNI KREDIT: Pored toga, svaki put kada se pritisne dugme, click_function se pokreće sa dva parametra. Prvi je referenca na objekat, posebno referenca na objekat za koji je dugme vezano. Druga je boja (na primjer, "Plava" - plava) u formatu linije, boja igrača koji je pritisnuo dugme.

5) Bulova tvrdnja

Poređenje varijabli

Opet uklonite sve skripte unutar funkcije buttonClicked (). Kreiraćemo novu varijablu, a zatim je modifikovati. Nova varijabla će biti Booleovog tipa. Booleove vrijednosti mogu biti samo istinite, lažne. Booleove vrijednosti se uvijek pišu malim slovima. Prvo ćemo kreirati našu varijablu pod našim GUID-ovima objekata i kontrolera.

trueOrFalse = istina

Zatim, u buttonClicked, mi ćemo postaviti neku logiku da provjerimo da li je trueOrFalse istina. Ako je istinito, ispisat će se da je istina i prebaciti ga na False. Ako se dugme ponovo pritisne, ispisaće se da je False i promeniće vrednost na Tačno.

ako je trueOrFalse onda print ("trueOrFalse je bio istinit.") --trueOrFalse je bio istinit. trueOrFalse = false else print ("trueOrFalse je bilo netačno.") --trueOrFalse je bilo netačno. trueOrFalse = istinit kraj

Mogli bismo to napisati i kao "if trueOrFalse == true then", ali ovo nije obavezno. Zapamtite da IF izrazu mora biti proslijeđena logička vrijednost. A pošto je trueOrFalse već jedan od njih, možemo napustiti "== true".

Petlja je dio koda koji se može pokrenuti više puta. Ovo je jedan od složenijih elemenata koje ćete koristiti u LUA. Često dolaze sa tabelama, što vam omogućava da pokrenete kod za svaki zapis u tabeli.

Ovo je druga vrsta - ipairs. Parovi su potrebni za tabele bez numeričkih ključeva, a iparovi su potrebni za tabele sa sekvencijalnim numeričkim ključevima (nizovi). ipairs dolazi po redu, s parovima može ići bilo kojim redoslijedom.

Lua je programski jezik koji su kreirali Roberto Jeruzalimski, Valdemar Selis i Luis Enrique de Figueiredo. Teško je povjerovati da je tako popularan jezik mogao nastati ne negdje u Silikonskoj dolini ili MIT-u, već u sunčanom Brazilu. U zemlji koja se, čini se, nalazi prilično daleko od centara IT koncentracije. Ipak, u jednoj od divizija Katoličkog univerziteta u Rio de Žaneiru, uspjeli su stvoriti tako fleksibilan i moćan jezik da sada nalazi široku primenu u mnogim oblastima.

Sve je počelo razvojem pomoćnog jezika za naftna kompanija PETROBRAS. Naftnim inženjerima je bio potreban grafički frontend za obradu podataka kako bi simulirali određene procese. U isto vrijeme, oprema bi mogla biti vrlo različita - PC DOS, UNIX, Macintosh, pa mnogi postojeći jezici (Perl, na primjer) jednostavno nisu odgovarali, jer su radili samo na jednom od ovih sistema. U ovoj fazi razvijen je jezik pod nazivom DEL (jezik za unos podataka). Vremenom su mogućnosti ovog jezika počele da nedostaju, pa se on razvijao novi jezik nazvan SOL (jednostavni objektni jezik). I konačno, 1993. godine programeri su shvatili da se mogu kombinovati u jedan punopravni programski jezik, koji je nazvan Lua (na portugalskom, Sol je sunce, a Lua je mjesec). Inače, 1996. godine Robert Jeruzalimski i drugi autori jezika odlučili su da ispričaju svetu o svom radu i poslali su članak o Lui časopisu "Software: Practice & Experience". Kasnije je Lua objavljena u časopisu "Dr. Dobb's", iz kojeg je o tome saznao jedan od glavnih programera avanturističkih igara u LucasArtsu. Odlučivši da koristi Lua umjesto svog vlastitog skriptnog jezika, bio je zadivljen njegovom jednostavnošću i efikasnošću. Kao rezultat toga, većina igre koja se razvijala u to vrijeme je prepisana na Lua, što je doprinijelo njenom rastu popularnosti.

Filozofija jezika Lua

Najviše od svega, ideologija Lua je slična JavaScriptu. Na primjer, oboje imaju prototip modela za implementaciju OOP-a. Međutim, Lua je mnogo fleksibilniji i moćniji jezik. Lua koristi virtuelna mašina i sakupljač smeća, što ga čini sličnijim Javi, ali ga to ne sprečava da zadrži svoju jednostavnost i eleganciju.

Jezik Lua je zasnovan na tabelama implementiranim pomoću asocijativnih nizova. Tabela ovdje označava skup podataka, gdje svaki od jedinstvenih ključeva ima svoju vrijednost.Upotrebom tabela u Lua-i možete predstaviti gotovo sve podatke - obične nizove, skupove, tabele simbola itd. Funkcije se također mogu opisati u poljima tabele. Jednostavno rečeno, ako želite da se neki lik ili objekt pojavi u vašoj omiljenoj igri, onda samo trebate znati njegovo ime kako biste u tablicu dodali funkciju za kreiranje ovog objekta i unijeli koordinate svijeta igre u kojem bi trebao pojaviti.

Vrijedi spomenuti i metatabele - tabele koje vam omogućavaju da promijenite ponašanje drugih tabela. Na primjer, odredite da li je dodavanje nenumeričkih vrijednosti prihvatljivo u određenoj situaciji. Ili, definirajte početak "prikupljanje smeća" (čišćenje memorije) za neki događaj.

Gdje se koristi Lua

Iako se Lua također koristi u industrijskim aplikacijama, ovaj jezik je stekao najveću popularnost u razvoju igara. Budući da programerima može biti teško napraviti promjene u motoru igre, a dizajneri igara stalno moraju mijenjati način rada nivoa ili likova, Lua je ovdje jednostavno nezamjenjiva. Vrlo je lako opisati interakciju između igrača, programskih NPC-a (seljaci u Skyrimu) ili ponašanje šefova pomoću skripti, koje se zatim mogu brzo promijeniti bez uticaja na motor.

Najpoznatija igra koja koristi Lua je sada, naravno, World of Warcraft. WoW interfejs (meniji, ćaskanje, itd.) je napisan u njemu. Lua je također korištena u igrama kao što su Crysis, King's of Bounty, Warhammer, Allods Online, CS, Stalker, The Witcher, Sim City, Far Cry, Civilization V, itd.

Takođe, dodaci za nmap, wireshark, nginx ili botovi za Telegram su često napisani na Lua. Wikipedia takođe planira da koristi Lua za ugradnju u MediaWiki (možete pokušati u engleskoj verziji).

Lua se takođe koristi u astrofizičkim istraživačkim opservatorijama i velikim univerzitetima širom sveta (na primer, na Tehničkom univerzitetu u Berlinu). Lua je također postao nešto poput nacionalnog programskog jezika u svojoj domovini i koriste ga mnoge lokalne kompanije i istraživački centri u većini različitim oblastima aktivnosti.

Složenost učenja Lua

Lua je prilično laka za učenje. Postoji mnogo resursa i video tutorijala o tome na mreži. Osim toga, gejmifikacija mnogo pomaže. Ako možete kreirati Lua modove u svojoj omiljenoj igrici, pokušajte eksperimentirati s njima svijet igre u procesu studiranja. Omogućit će vam da naučite programiranje na zabavan i lak način.

Lua za / protiv

Plusi Lua uključuju:

  • dobra prenosivost. Ako trebate, na primjer, prenijeti program sa Windowsa na Linux, tada, s izuzetkom nekih biblioteka specifičnih za platformu, kod nije potrebno mnogo mijenjati.
  • mogućnost brzog dodavanja C biblioteke u Lua aplikaciju
  • jednostavnost implementacije
  • lagana sintaksa
  • Lua programi troše malo memorije
  • distribuira pod MIT licencom, tako da ga možete besplatno koristiti za poslovne projekte

Protiv:

Lua radi jednako dobro kao i skriptni jezik. Ali najčešće se koristi u kombinaciji s drugim jezicima, iako je prilično sposoban samostalno obavljati neke zadatke. Stoga ćete morati znati još barem jedan, na primjer, C ili C ++. Međutim, poznavanje Lua nesumnjivo će vam biti veliki plus kada angažujete programera igara.

Povezane tehnologije

LuaJIt- JIT kompajler za Lua. Koristi se za zadatke u kojima je vrijeme izvršenja kritično. Radi oko šest puta brže od standardnog tumača.

Love2D je popularan okvir za razvoj 2D igara u Lua.

Corona SDK je okvir za kreiranje aplikacija za iOS i Android u Lua. Od 2015. godine pojavila se besplatna verzija.

Ova serija tutorijala koju sam zamislio govorit će o programskom jeziku Lua. Potrudiću se da prezentacija bude što pristupačnija za početnike, i fokusiraću se na njih. Odnosno, iskusni Lua koderi, najvjerovatnije, neće naučiti ništa novo iz ovoga (siguran sam da će naći mjesta samo za prigovaranje i primjedbe, koje su, zapravo, čak i dobrodošle s njihove strane), ali ako nemate bogatih iskustvo programiranja iza tebe, onda mislim da možeš nešto da podneseš.

Cijela serija se neće pokoravati nijednom sistemu. Lekcije će uzastopno uvesti brojne jezičke konstrukcije tako da do treće ili četvrte lekcije već možete pisati svoje programe. Moj cilj je da te gurnem prema samostalno učenje jezik, pomoći vam da ga osjetite, a ne objašnjavate od A do Š - ako želite potpuno savladati jezik, čitajte referentni vodič(što je, iako loše, prevedeno na ruski: http://www.lua.ru/doc/). Što prije pređete sa lekcija "za lutke" na webu da proučite vodič, to bolje.

Ako nešto nije jasno - obavezno postavite pitanje u komentarima, a ja i ostali članovi pokušat ćemo vam pomoći.

Lua je popularan programski jezik koji se lako uči, koji se može ugraditi, interpretirati i dinamički kucati. opće namjene... Ne, ne morate razumjeti ni pola riječi u prethodnoj rečenici – najvažnije je znati da je popularna i nekomplicirana. Inače, svoju popularnost stekao je zbog svoje jednostavnosti i male veličine distributivnog kompleta (oko 150 kilobajta). Podržane su Lua skripte veliki iznos aplikacije, uključujući igre. World of Warcraft i S.T.A.L.K.E.R. koristite jezik Lua. Moj omiljeni motor za igre će vam omogućiti da s lakoćom kreirate razne igre koristeći Lua. Kao što vidite, Lua vam otvara mnogo horizonata!

Prije nego što počnemo, morate postaviti programsko okruženje: to jest, pronaći program koji prihvaća Lua kod koji napišete i izvršava ga: interpreter. Ovdje postoje tri opcije:

1. Preuzmite zvaničnu Lua distribuciju sa jedne od lokacija koje ih isporučuju.

Sa službene Lua stranice, možete samo preuzeti izvorni kodovi tumač. Međutim, ako pogledate http://lua.org/download.html u odjeljku Binarne datoteke, možete pronaći veze do web lokacija sa izvršne datoteke za Windows. Jedan od njih: . Odatle preuzmite jednu od arhiva (koja odgovara vašoj platformi: Win32 ili Win64) i raspakujte je negde, po mogućnosti u direktorijum sa kratkim putem: kao što je C: \ lua. Od sada ću pretpostaviti da koristite Windows, a vaš prevodilac je tu.

Za korisnike operativnih sistema na Zasnovan na Linuxu u tom smislu je lakše: samo trebaju koristiti menadžer paketa i instalirati Lua iz spremišta. Na Debianu i Ubuntuu to se radi pomoću apt-get install lua, a na Fedori, Red Hatu i derivatima to se radi pomoću yum install lua. Međutim, nemojte mi slijepo vjerovati i konsultujte se sa svojim operativni sistem da saznate kako to tačno radite.

2. Koristite online tumača.

Nalazi se na http://www.lua.org/demo.html. U početku će to možda biti dovoljno, ali kasnije, kada se dotaknemo modula, morat ćete koristiti offline verziju. Korišćenje onlajn tumača je vrlo jednostavno: unesite svoj program u prozor sa tekstom i kliknite na dugme Pokreni. Program će se izvršiti, prozor Izlaz će prikazati izlaz vašeg programa, kao i izvještaje o greškama, ako ih ima.

3. Koristite IDE.

Na primjer ZeroBrane Studio: http://studio.zerobrane.com/. Postoje i drugi - pretražite internet.

Sada su u opticaju dvije malo različite verzije Lua: 5.1 i 5.2. Ja ću se fokusirati na najviše najnoviju verziju- verzija 5.2, ali ću svakako ukazati na bitne razlike između njega i 5.1, budući da je i ovo drugo prilično uobičajeno. Inače, Lua 5.1 izvršava kod jedan i po puta brže od Lua 5.2, tako da znate.

=== Lekcija #1 ===

Dakle, počnimo. Kreirajte izolovano od vanjske datoteke datoteku main.lua u folderu i upišite u nju:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
- main.lua -
print (" Zdravo svijete!")

Onda uleti komandna linija(ne zaboravite na cd direktorij main.lua):

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
> C: \ lua \ lua.exe main.lua

Kao odgovor, Lua tumač će izdati:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
Zdravo svijete!

U principu, to je bilo za očekivati. U programu smo pozvali funkciju print. Funkcija ispisa traje proizvoljan broj parametre i uzastopno ih prikazuje na ekranu. V ovaj primjer proslijedili smo mu string (niz znakova) "Zdravo svijete!" Možete proslijediti kao parametar:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
print (8) - bilo koji decimalni broj
- će ispisati: 8

Ispis (0xDEADBEEF) - heksadecimalni broj
- će ispisati: 3735928559

Print ("0xDEADBEEF") je niz, a ne broj! Vidite li citate?
- će ispisati: 0xDEADBEEF

Ispis (1.35e-4) - broj s pomičnim zarezom ( razlomak broj)
- Izdat će 0,000135. 1,35e-4 treba shvatiti kao "1,35 pomnoženo
- za deset do minus četvrti stepen“, ako neko ne zna.

Ispis ((198 * 99) -3 * 500 + 14/88) - izraz
- Prikazat će vrijednost izraza: 18102.159090909. Nije loša alternativa
- desktop kalkulator!

Ispis (198/7, "đubrivo", 2 ^ 9) - nekoliko parametara proizvoljnog
- tip. Vrijednosti svakog od njih će biti prikazane, odvojene znakovima
- kartice:
- 28.285714285714 đubrivo 512
- Imajte na umu da se citati oko đubriva ne prikazuju!

Ispis (1,35) je dva broja, a ne decimalni razlomak od 1,35!
- Zarez se koristi za razdvajanje parametara.
- Izlazi:
-- 1 35

Znak "-" nije samo imitacija crtice, koja se ubacuje radi ljepote. Znak "-" u Lua označava komentare: nagoveštaje za programera koje interpretator ignoriše i imaju za cilj da olakšaju razumevanje koda. Možete pokušati napisati u programu:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
- print ("ništa")

Prevodilac će misliti da je to komentar i neće slijediti upute.

Napomena za domaćicu: ako želite ispisati samo jedan red, možete napisati poziv print ovako, bez zagrada:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
print "Samo jedan niz"

Pogodnost je definitivno upitna: samo imajte na umu da je to moguće. Međutim, takvi pozivi su neprihvatljivi:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
print 2 - neće raditi, 2 - nije niz.
ispisati 2 * 2 + 6 - sve više neće raditi

Str = "string !!!" - dodijeljena varijabli str vrijednost "string !!!"
- pročitajte o varijablama u nastavku
print str također neće raditi.

U svakom od gore navedenih slučajeva, program će jednostavno odbiti raditi. Dakle, u pozivu "bez roditelja", ime funkcije može biti praćeno samo stringovim literalom (tj. nizom znakova zatvorenim u navodnicima), i ništa drugo. U budućnosti ću govoriti o ovoj funkciji malo detaljnije, ali za sada vam je ovo dovoljno.

U bilo kojem dobar jezik programiranjem je moguće deklarirati varijable: male kontejnere koji mogu sadržavati bilo koje podatke. Lua to radi na ovaj način:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
<имя_переменной> = <выражение>

Na primjer:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
zvijezda = 8 - Varijabla zvijezda sada pohranjuje broj 8
wars = "owl" - varijabla wars sadrži niz "owl"
jedi = 42/2 - U varijabilnoj jedi - broj 21
luke = zvijezda * jedi - varijabla luke je broj 168 (da, 21 puta 8)

Vrijednosti varijabli i izraza s njima također se mogu prikazati:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
print (zvijezda, ratovi, jedi, jedi-star + luke)
- Izlazi:
- 8 sova 21 181

Samo ne pokušavajte da dodate varijable star i wars - pokušaj da dodate 8 na "sova" neće vam pomoći!

Kao što ste trebali primijetiti, ime varijable može biti gotovo bilo šta: glavna stvar je da ne počinje brojem. Ozbiljno, možete čak deklarisati varijablu pod nazivom print, a onda će funkcija print prestati raditi, jer će se naziv print odnositi na novodeklariranu varijablu. Ali postoji grupa riječi koje je zabranjeno koristiti kao nazive varijabli - to su ključne riječi jezika koje još nismo upoznali, ali koje svakako vrijedi pogledati:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
i break uradi elseif end
false za funkciju goto ako je in
lokalno nula ne ili ponavljanje povratka
onda istina do nekog vremena

Kreiranjem varijable s jednim od ovih imena dovest ćete do greške u programu, a ona definitivno neće raditi. Napomena: u Lua 5.1 ključna riječ Ne postoji goto, i tako možete imenovati varijablu, ali bolje je da to ne radite.
Također imajte na umu da su imena varijabli osjetljiva na velika i mala slova. To znači da su foo, fOo, fOO i FOO četiri različite varijable, pa ako ste napisali ime varijable mala slova, a kasnije ga napisao velikim slovima, tada, najvjerovatnije, program neće raditi ispravno.

A sada sama važna tačka: šta se dešava ako, slučajno ili namjerno, pozovete na nepostojeću varijablu? U većini drugih jezika to će uzrokovati grešku, ali u Lua-i je ova situacija prihvatljiva. To se tumači kao da nepostojeća varijabla zaista postoji, ali njena vrijednost jeste nula. nula- zapamti ovu reč! je posebna vrsta vrijednosti u Lua koja znači "ništa". Ne nula ili prazan niz (niz kao što je "" - pokušajte ga prikazati), već ništa. Uporedite ovo sa ovim modelom: postoje dvije osobe, jedna od njih ima bankovni račun, ali na njemu nema novca, a druga uopće nema bankovni račun. U Lua terminima će se smatrati da prvi ima 0 dolara na računu, a drugi ima nula... I to čak ne dolara, već samo nula... Nadam se da te nisam zbunio.

Pokušajte, na primjer, pokrenuti program poput ovog:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
- main.lua -
foo = "bar"
print (foo, baz)
- Izlazi:
- nula

Dakle, varijabla baz, koja ne postoji, ali se pretpostavlja da postoji, ima vrijednost nil, a funkcija print to razumije i ispisuje je na ekran kao string "nil". Lua ima dobar metod provjerava postojanje varijable: ako vrijednost varijable nije nula, onda je barem deklarirana. Alternativno, možete eksplicitno deklarirati varijablu kao nula:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
cool_var = nula

To se može učiniti, i iako na prvi pogled može izgledati glupo, ponekad se i radi. U narednim lekcijama naučit ćete ko i zašto, a vjerovatno ćete i početi raditi isto. Ponekad, naravno.
Budite oprezni sa nula: možete ispisati nil, ali možete to učiniti. aritmetičke operacije zabranjeno je! To jest, ako se izvučete sa printom (nil), konstrukcija kao što je 99 + nil će dati grešku, čak i ako želite da 99 + nil bude 99. Vjerujte, i ja sam bio uznemiren kada sam saznao.

Sažetak:
1. Naučili smo o funkciji print, šta ona može učiniti i kako je ispravno pozvati bez zagrada.
2. Naučio kako deklarisati varijable, kako izračunati izraze (iako dosta), koja imena varijabli mogu biti.
3. Saznali smo o nulu, proželi se njegovom mističnom misterijom i stekli povjerenje da ćemo u budućnosti biti povezani s mnogo toga.

Za one koji su radoznali i koji žele da ojačaju svoje znanje, nudim jednostavne vežbe, koji možete preskočiti ako se već osjećate dovoljno kompetentnim:
1. Napišite program koji pušta refren vaše omiljene pjesme.
2. Pokušajte ispisati vrijednosti sljedećih izraza. Pokušajte razumjeti zašto neki od njih rade, a neki ne. Pogledajte greške koje uzrokuju neuspjeli izrazi.

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
2 + "string";
6 + "14";
"kutija" - "vox";
1 * "11b"
"148" * "1e6";


3. Napišite program koji razmjenjuje dva varijabilne vrijednosti... To je:

200? "200px": "" + (this.scrollHeight + 5) + "px"); ">
a = 6502
b = 8086


Neka a postane jednako 8086 i b jednako 6502. Da biste to učinili, kreirajte treću varijablu i izvršite neke jednostavne zamjene. Provjerite je li problem ispravno riješen tako što ćete pozvati print (a, b) prije razmjene i print (a, b) nakon.

Top srodni članci