Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Securitate
  • Lua este un limbaj de programare pentru comenzi. Bucle cu o declarație for în Lua

Lua este un limbaj de programare pentru comenzi. Bucle cu o declarație for în Lua

Lua(din portugheză pentru „lună”) este un limbaj de programare interpretat dezvoltat de Computer Graphics Technology Group al Universității Pontificale Catolice din Rio de Janeiro din Brazilia. este distribuit gratuit, cu sursă deschisă cod sursaîn limbajul C. În ceea ce privește capabilitățile și implementarea sa, este cel mai apropiat de JavaScript, dar, din punctul meu de vedere, este mai flexibil și are mai multe caracteristici. În ciuda faptului că Lua nu are concepte precum „clasă” sau „obiect”, pe baza sa este foarte posibil să construiți programe OOP bazate pe metatable, care vă permit, de asemenea, să implementați, de exemplu, supraîncărcarea operatorului.

În această lecție, vreau să vă ofer unele dintre cele mai multe informatii generale despre acest limbaj, iar în lecțiile următoare vă voi arăta în practică cum puteți utiliza limbajul Lua pentru a rezolva problemele de programare a jocurilor.

Istoria lui Lua

După cum am spus mai sus, Lua a fost dezvoltat de una dintre diviziile Universității Catolice din Rio de Janeiro. S-a întâmplat până în 1993. Dar din acel moment, Lua s-a dezvoltat activ și au fost lansate periodic noi versiuni de Lua - a devenit mai convenabil, mai rapid, mai funcțional. ÎN acest moment versiune stabilă Lua este 5.1, totuși versiunea alfa 5.2 este deja disponibilă.

Tipuri Lua

ÎN Lua Există opt tipuri de date de bază:

  • zero (nedefinit)
  • boolean (boolean)
  • număr (numeric)
  • şir
  • funcție (funcție)
  • userdata (date utilizator)
  • fir (fir)
  • masa (masa)

Lua este o limbă cu definiție dinamică a tipului de date. Orice variabilă din Lua poate conține valori ale oricăruia dintre tipurile de mai sus. Toate valorile din Lua pot fi stocate în variabile, utilizate ca argumente pentru apelurile de funcții și returnate ca rezultat al execuției unei funcții.

Lua mese

Mesele sunt cele mai multe tip important datele în Lua - tabelele sunt baza pentru stocarea și utilizarea tipuri personalizate date: structuri, matrice, liste, seturi etc. sunt implementate în Lua prin tabele. Un tabel în Lua este un set de perechi [Key, Value], unde cheia poate fi orice valoare, alta decât zero.

dispozitiv Lua

La fel ca multe limbaje de programare interpretate, implementarea Lua are un compilator de bytecode de la sursă la executabil și o mașină virtuală pentru executarea bytecode-ului generat. În cazul lui Lua, bytecode nu este instrucțiuni de mașină, ci comenzi „ procesor virtual Lua” cu registre multiple, ceea ce îmbunătățește eficiența execuției. Mașina virtuală Lua folosește și principiul colectării gunoiului (similar cu Java sau .NET), care permite programatorului să nu-și facă griji cu privire la alocarea / ștergerea memoriei - acest lucru este realizat chiar de interpretul.

Pentru sarcinile critice, există un compilator Lua: care vă permite să obțineți cod mai rapid.

Unde se folosește Lua?

Lua, de-a lungul anilor de existență și dezvoltare, a câștigat inimile multor dezvoltatori de software și în prezent este folosit într-o mare varietate de domenii de programare: în scripting jocuri pe calculator(Crysis, Strigăt îndepărtat, Diablo 3, S.T.A.L.K.E.R.), pe serverele de jocuri MMO (World of Warcraft, Allods Online), în pachete grafice (de exemplu, în Adobe Photoshop Lightroom), în motoare de jocuri și designeri de jocuri (INSTEAD), pentru programarea GUI a unor aplicații (același Photoshop Lightroom) și în multe alte sarcini.

Lua Documentatie

În general, în rețea există multă documentație, precum și exemple de utilizare. Prin urmare, nu voi aprofunda acest subiect. Pot să spun doar că vă pot sfătui să citiți

Introducere

Acest ghid este destinat celor cu experiență limitată cu LUA. Vom acoperi elementele de bază ale modului de codificare, elementele de bază pentru a crea cod mai complex și vom oferi câteva exemple. Manualul este scris în așa fel încât să fie pus imediat în practică. Prin urmare, ar trebui să deschideți Simulatorul de masă și editorul LUA pentru a continua.

Acesta este primul ghid din această serie. Al doilea este Learning Lua More. Al treilea este un set caracteristici utile numită Învățarea funcțiilor Lua.

Înainte de prima apăsare a tastei

În primul rând, aș recomanda cu căldură să instalați Atom dacă aveți de gând să scrieți scripturi în Tabletop Simulator. Știe ce funcții pot fi utilizate și va importa/exporta codul către/de la TTS.

Atunci trebuie să marcați. Veți face referire frecvent la acest site odată ce începeți să vă scrieți scripturile. Aici vei gasi funcții specialeîn Tabletop Simulator și modul în care funcționează. Veți folosi cel mai adesea paginile API și Object, dar macar, in experienta mea.

Instruire

Când salvați scripturile dvs. pe Tabletop, acesta va folosi dvs ultima salvareși apoi încărcați scripturi în el. Prin urmare, pentru orice script pe care intenționați să îl scrieți, va trebui să faceți următoarele:

  • Pregătiți masa așa cum doriți.
  • Salvați masa.
  • Încărcați masa.
Pentru acest exercițiu, luați o masă goală și creați două obiecte (eu am folosit un bloc pătrat și un bloc dreptunghiular) și o pică roșie.

Apăsați-l în mod repetat, pentru că bineînțeles că o veți face.

CREDIT SUPLIMENTAR: Când creați tabele, există mai multe moduri de a face acest lucru. Metoda folosită aici a fost de a oferi claritate vizuală. Cu toate acestea, crearea unor parametri de buton ca acesta ocupă mult spațiu dacă aveți o mulțime de butoane. Prefer să îmi creez tabelele într-un mod care să economisească spațiu, dar să nu depășească marginea dreaptă. Folosind exemplul nostru, aș crea un tabel de parametri ca acesta:

button_parameters = ( click_function="buttonClicked", function_owner=nil, label="Pres Me", position=(0,0.8,0), rotation=(0,0,0), width=500, height=500, font_size= o sută )

CREDIT SUPLIMENTAR: Acesta este momentul perfect pentru a începe să te joci lucruri diferite, pe care o poți face cu obiecte. Accesați pagina „Obiect” din baza de cunoștințe și încercați materialul. Mutați obiecte, faceți-le să schimbe pozițiile, schimbați-le culorile, orice credeți.

CREDIT SUPLIMENTAR: De asemenea, de fiecare dată când se face clic pe butonul, click_function este rulat cu doi parametri. Prima este o referire la un obiect, în special o referire la obiectul la care este legat butonul. A doua este culoarea (de exemplu, „Albastru” - albastru) în formatul șir al culorii jucătorului care a apăsat butonul.

5) Aserțiune logică

Comparație de variabile

Din nou eliminați toate scripturile din interiorul funcției buttonClicked(). Vom crea o nouă variabilă și apoi o vom modifica. Noua variabilă va fi de tip boolean. Valorile booleene pot fi doar adevărate, false. Valorile booleene sunt întotdeauna scrise cu litere mici. În primul rând, vom crea variabila noastră sub GUID-ul nostru obiect și verificator.

trueOrFalse = adevărat

Apoi, în buttonClicked , vom configura o logică pentru a verifica dacă valoarea este trueOrFalse. Dacă este adevărat, va imprima că este adevărat și îl va comuta pe False. Dacă butonul este apăsat din nou, se va imprima că este Fals și va comuta valoarea la True.

dacă trueOrFalse atunci print("trueOrFalse a fost adevărat.") --trueOrFalse a fost adevărat. trueOrFalse = false else print("trueOrFalse a fost fals.") --trueOrFalse a fost false. trueOrFalse = sfârșitul adevărat

Am putea scrie și așa „dacă trueOrFalse == adevărat atunci”, dar nu este necesar. Amintiți-vă că instrucțiunii IF trebuie să primească o valoare booleană. Și deoarece trueOrFalse este deja unul dintre acestea, putem renunța la „== true”.

O buclă este o secțiune de cod care poate rula de mai multe ori. Acesta este unul dintre elementele mai complexe pe care le veți folosi în LUA. Ele vin adesea cu tabele, permițându-vă să rulați cod pentru fiecare intrare din tabel.

Acesta este un alt tip - ipairs. Perechile sunt necesare pentru tabelele fără chei numerice, iar ipairs este necesar pentru un tabel cu chei numerice consecutive (matrice). ipairs este în ordine, în timp ce perechile pot fi în orice ordine.

Lua este un limbaj de programare creat de Roberto Jeruzalimski, Valdemar Selish și Luis Enrique de Figueiredo. Este greu de crezut că un astfel de limbaj popular ar fi putut fi creat nu undeva în Silicon Valley sau MIT, ci în Brazilia însorită. Într-o țară care, s-ar părea, este situată destul de departe de centrele de concentrare IT. Cu toate acestea, într-una dintre diviziile Universității Catolice din Rio de Janeiro, ei au reușit să creeze o astfel de flexibilitate și limbaj puternic că acum este utilizat pe scară largă în multe domenii.

Totul a început cu dezvoltarea unui limbaj auxiliar pentru companie petroliera PETROBRAS. Inginerii petrolieri aveau nevoie de un front-end grafic pentru a procesa datele din simulările anumitor procese. În același timp, echipamentul ar putea fi foarte diferit - atât PC DOS, cât și UNIX, Macintosh, atât de multe limbi existente \u200b\u200b(Perl, de exemplu) pur și simplu nu se potriveau, deoarece au funcționat doar pe una dintre acestea. sisteme. În această etapă, a fost dezvoltat un limbaj numit DEL (limbaj de introducere a datelor). De-a lungul timpului, capacitățile acestui limbaj nu au fost suficiente, așa că a fost dezvoltat Limba noua; limbaj nou numit SOL (limbaj obiect simplu). Și, în cele din urmă, în 1993, dezvoltatorii și-au dat seama că ar putea fi combinate într-un singur limbaj de programare cu drepturi depline, care se numea Lua (în portugheză, Sol este soarele, iar Lua este luna). Apropo, în 1996, Roberto Jeruzalimsky și alți autori ai limbii au decis să spună lumii despre munca lor și au trimis un articol despre Lua revistei „Software: Practice & Experience”. Lua a fost mai târziu prezentată în revista Dr. Dobb, de la care unul dintre cei mai buni dezvoltatori de jocuri de aventură de la LucasArts a aflat despre asta. Decizând să folosească Lua în locul propriului limbaj de scripting, a fost uimit de simplitatea și eficiența acestuia. Ca urmare a acestui fapt, cea mai mare parte a jocului dezvoltat la acel moment a fost rescris în Lua, ceea ce a contribuit la creșterea popularității sale.

Filosofia limbii Lua

Mai presus de toate, ideologia lui Lua este similară cu JavaScript. De exemplu, ambii au un model prototip pentru implementarea OOP. Cu toate acestea, Lua este mult mai flexibilă și mai puternică. Lua folosește mașină virtualăși un colector de gunoi, ceea ce îl face mai mult ca Java, dar acest lucru nu îl împiedică să-și păstreze simplitatea și eleganța.

Limbajul Lua se bazează pe tabele implementate folosind tablouri asociative. Un tabel aici înseamnă un set de date, în care fiecare dintre cheile unice are propria sa valoare. Folosind tabele în Lua, puteți reprezenta aproape orice date - tablouri obișnuite, seturi, tabele de simboluri etc. Funcțiile pot fi descrise și în câmpurile tabelului. Mai simplu spus, dacă vrei să apară un anumit personaj sau obiect în jocul tău preferat, atunci va fi suficient să-i cunoști numele pentru a introduce o funcție în tabel pentru a crea acest obiect și a introduce coordonatele lumii de joc în care ar trebui să apară.

De asemenea, merită menționat metatablele - tabele care vă permit să schimbați comportamentul altor tabele. De exemplu, pentru a determina dacă este permis într-o anumită situație să adăugați valori nenumerice. Sau definiți pentru un anumit eveniment lansarea „colectării gunoiului” (curățarea memoriei).

Unde se folosește Lua?

Deși Lua este folosit și în aplicații industriale, acest limbaj a câștigat cea mai mare popularitate în dezvoltarea jocurilor. Deoarece poate fi dificil pentru dezvoltatori să facă modificări motorului de joc, iar designerii de jocuri trebuie să facă în mod constant modificări în modul în care funcționează nivelurile sau personajele, Lua este pur și simplu indispensabil aici. Este foarte ușor să descrii interacțiunea dintre jucători, să programezi NPC-uri (țărani în Skyrim) sau comportamentul șefilor folosind scripturi, care pot fi apoi schimbate rapid fără a afecta motorul.

Cel mai faimos joc care folosește Lua este, desigur, World of Warcraft. Pe ea sunt scrise interfața WoW (meniuri, chat etc.). Lua a fost folosit și în jocuri precum Crysis, King's of Bounty, Warhammer, Allods Online, CS, Stalker, The Witcher, Sim City, Far Cry, Civilization V etc.

Pluginurile pentru nmap, wireshark, nginx sau bot pentru Telegram sunt adesea scrise în Lua. De asemenea, Wikipedia intenționează să folosească Lua pentru încorporarea în MediaWiki (puteți încerca în versiunea în limba engleză).

Lua este, de asemenea, utilizat în observatoarele de cercetare în astrofizică și în universitățile importante din întreaga lume (de exemplu, TU Berlin). De asemenea, Lua a devenit un limbaj național de programare în patria sa și este folosit de multe companii locale și centre de cercetare în cel mai mare zone diferite Activități.

Dificultatea de a învăța Lua

Lua este destul de ușor de învățat. Există multe resurse și tutoriale video pe net pe el. În plus, gamification ajută foarte mult aici. Dacă jocul tău preferat îți permite să modifici Lua, atunci încearcă să experimentezi lumea jocurilorîn procesul de învățare. Acest lucru va face ca învățarea programarii să fie distractivă și fără efort.

Pro/Dezavantaje ale lui Lua

Avantajele Lua includ:

  • portabilitate buna. Dacă aveți nevoie, de exemplu, să portați un program de la Windows la Linux, atunci, cu excepția unor biblioteci specifice platformei, codul nu va trebui să se schimbe prea mult.
  • capacitatea de a adăuga rapid o bibliotecă C la o aplicație Lua
  • ușurința implementării software-ului
  • sintaxa usoara
  • Programele Lua consumă puțină memorie
  • distribuit sub licența MIT, astfel încât să îl puteți utiliza gratuit pentru proiecte de afaceri

Dintre minusuri:

Lua funcționează la fel de bine ca orice limbaj de scripting poate. Dar cel mai adesea este folosit împreună cu alte limbi, deși este destul de posibil să efectuați anumite sarcini pe cont propriu. Prin urmare, va trebui să cunoașteți cel puțin încă unul, de exemplu, C sau C++. Cu toate acestea, cunoașterea Lua va fi, fără îndoială, un mare plus pentru tine atunci când aplici pentru un loc de muncă ca dezvoltator de jocuri.

Tehnologii conexe

LuaJIt- Compilatorul JIT pentru Lua. Folosit pentru sarcini în care timpul de execuție este critic. Rulează de aproximativ șase ori mai rapid decât interpretul standard.

Love2D este un cadru popular pentru dezvoltarea jocurilor 2D în Lua.

Corona SDK- un cadru pentru crearea de aplicații pentru iOS și Android pe Lua. O versiune gratuită este disponibilă din 2015.

În această serie de tutoriale pe care am conceput-o, se va discuta despre limbajul de programare Lua. Voi încerca să fac prezentarea cât mai accesibilă pentru începători și mă voi concentra asupra lor. Adică, codificatorii Lua cu experiență, cel mai probabil, nu vor învăța nimic nou de aici (sunt sigur că vor găsi aici loc doar pentru strângere și comentarii, care, de fapt, sunt chiar binevenite din partea lor), dar dacă nu ai o experiență bogată în programare în spate, atunci cred că vei obține ceva.

Întreaga serie nu se va supune niciunui sistem. Lecțiile vor introduce secvențial o serie de constructe de limbaj, astfel încât până la a treia sau a patra lecție să vă puteți scrie deja programele. Scopul meu este să te împing spre studiu independent limbajul, ajutați-l să îl simțiți și nu explicați-l de la A la Z - dacă doriți să stăpâniți complet limba, citiți ghid de referință(care, deși prost, este tradus în rusă: http://www.lua.ru/doc/). Cu cât treci mai repede de la tutorialele „pentru manechin” de pe web la manual, cu atât mai bine.

Dacă ceva nu este clar, asigurați-vă că puneți o întrebare în comentarii, iar eu și alți participanți vom încerca să vă ajutăm.

Lua este un limbaj de programare popular, ușor de învățat, încorporabil, interpretat, cu tastare dinamică. scop general. Nu, nu trebuie să înțelegeți nici măcar jumătate din cuvintele din propoziția anterioară - principalul lucru este să știți că este popular și necomplicat. Apropo, simplitatea, precum și dimensiunea mică a distribuției (aproximativ 150 de kiloocteți), el și-a meritat popularitatea. Scripturi Lua acceptate o cantitate mare aplicații, inclusiv jocuri. World of Warcraft și S.T.A.L.K.E.R. folosește limba Lua. Motorul meu de joc preferat vă permite să creați cu ușurință o varietate de jocuri cu Lua. După cum poți vedea, Lua îți deschide o mulțime de orizonturi!

Înainte de a începe, ar trebui să configurați un mediu de programare: adică să găsiți un program care preia codul Lua pe care îl scrieți și îl execută: un interpret. Există trei opțiuni aici:

1. Descărcați distribuția oficială Lua de pe unul dintre site-urile care le furnizează.

De pe site-ul oficial Lua poate fi descărcat doar codurile sursă interpret. Cu toate acestea, dacă vă uitați la http://lua.org/download.html în secțiunea Binare, este posibil să găsiți link-uri către site-uri web cu fișiere executabile pentru Windows. Unul din ei: . Descărcați una dintre arhive de acolo (care se potrivește cu platforma dvs.: Win32 sau Win64) și extrageți-o undeva, de preferință într-un director cu o cale scurtă: ca C:\lua. De acum înainte, voi presupune că utilizați Windows și interpretul dvs. se află acolo.

Utilizatorii sistemului de operare Bazat pe Linuxîn acest sens, este mai ușor: trebuie doar să folosească managerul de pachete și să instaleze Lua din depozite. Pe Debian și Ubuntu, acest lucru se face cu apt-get install lua, iar pe Fedora, Red Hat și derivate, yum install lua. Cu toate acestea, nu aveți încredere în mine orbește și consultați cartea dvs. de referință. sistem de operare pentru a afla exact cum o faci.

2. Folosiți un interpret online.

Situat la http://www.lua.org/demo.html . La început poate fi suficient, dar pe viitor, când vom atinge modulele, vei fi obligat să folosești versiunea offline. Utilizarea interpretului online este foarte simplă: introduceți programul dvs. în caseta de text și faceți clic pe butonul Run. Programul va fi executat, rezultatul programului dvs. va apărea în fereastra de ieșire, precum și rapoartele de eroare, dacă există, de dvs.

3. Folosiți un IDE.

De exemplu, ZeroBrane Studio: http://studio.zerobrane.com/ . Mai sunt și altele - uită-te online.

În prezent sunt utilizate două versiuni ușor diferite de Lua: 5.1 și 5.2. Mă voi concentra pe cel mai mult ultima versiune- versiunea 5.2, dar cu siguranță voi indica diferențe importanteîntre acesta și 5.1, deoarece și acesta din urmă este destul de comun. Apropo, Lua 5.1 execută codul de o dată și jumătate mai rapid decât Lua 5.2, ca să știi.

=== Lecția #1 ===

Deci, să începem. Creați izolat de dosare străine folderul principal.lua și scrieți în el:

200?"200px":""+(this.scrollHeight+5)+"px");">
-- main.lua --
imprimare(" Salut Lume!")

Atunci fugi înăuntru Linie de comanda(nu uitați să treceți la directorul main.lua cu comanda cd):

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

Ca răspuns, interpretul Lua va emite:

200?"200px":""+(this.scrollHeight+5)+"px");">
Salut Lume!

Practic, acest lucru este de așteptat. În program, am numit funcția de imprimare. Funcția de imprimare ia număr arbitrar parametrii și îi afișează secvenţial pe ecran. ÎN acest exemplu i-am trecut șirul (șirul de caractere) „Hello world!”. Cu același succes, puteți trece ca parametru:

200?"200px":""+(this.scrollHeight+5)+"px");">
print(8) -- ceva numar decimal
-- ieșire: 8

Print(0xDEADBEEF) -- număr hexazecimal
-- ieșire: 3735928559

Print("0xDEADBEEF") -- și acesta este un șir, nu un număr! Vezi citatele?
-- imprimări: 0xDEADBEEF

Print(1.35e-4) -- număr în virgulă mobilă ( un număr fracționar)
-- Ieșiri 0,000135. 1.35e-4 ar trebui înțeles ca „de 1,35 ori
- cu zece la minus a patra putere”, dacă cineva nu știe.

Print((198*99)-3*500 + 14/88) -- expresie
-- Afișează valoarea expresiei: 18102.159090909. Nu este o alternativă rea
-- un calculator desktop!

Print(198/7, „fertilizer”, 2^9) -- unii parametri de arbitrare
-- tip. Se vor afișa valorile fiecăruia dintre ele, separate prin semne.
-- file:
-- 28.285714285714 ingrasamant 512
-- Rețineți că ghilimele din jurul îngrășământului nu sunt tipărite!

Print(1,35) -- două numere, nu zecimală 1,35!
-- O virgulă este folosită pentru a separa opțiunile.
-- Ieșiri:
-- 1 35

Semnul „--” nu este doar o imitație a liniuței, care este inserată pentru frumusețe. Semnul „--” din Lua marchează comentarii: indicii pentru programator care sunt ignorate de interpret și au scopul de a face codul mai ușor de înțeles. Puteți încerca să scrieți în program:

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

Interpretul va crede că este un comentariu și nu va executa instrucțiunea.

Notă pentru gazdă: dacă doriți să imprimați o singură linie, puteți scrie apelul de tipărire astfel, fără paranteze:

200?"200px":""+(this.scrollHeight+5)+"px");">
imprimați „Doar un șir”

Comoditatea este cu siguranță discutabilă: rețineți că acest lucru este posibil. Cu toate acestea, astfel de apeluri nu sunt permise:

200?"200px":""+(this.scrollHeight+5)+"px");">
print 2 nu va funcționa, 2 nu este un șir.
imprimați 2*2 + 6 -- cu atât mai mult nu va funcționa

Str = "șir!!" -- setați variabila str la „șir!!”
-- citiți mai jos despre variabile
print str -- nici nu va funcționa.

În fiecare dintre cazurile de mai sus, programul va refuza pur și simplu să funcționeze. Astfel, într-un apel „în paranteză”, doar un șir literal (adică o secvență de caractere cuprinse între ghilimele) poate urma numele funcției și nimic altceva. În viitor, voi vorbi despre această funcție mai detaliat, dar deocamdată este suficient pentru tine.

În orice limbaj bun programare se pot declara variabile: containere mici care pot contine un fel de date. În Lua, acest lucru se face astfel:

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

De exemplu:

200?"200px":""+(this.scrollHeight+5)+"px");">
stea = 8 -- Variabila stea stochează acum numărul 8
wars = „bufniță” -- În variabila wars, șirul „bufniță”
jedi = 42/2 -- Variabila jedi este numărul 21
luke = star*jedi -- Variabila luke este numărul 168 (da, de 21 ori 8)

Valorile variabilelor și expresiile cu acestea pot fi, de asemenea, afișate pe ecran:

200?"200px":""+(this.scrollHeight+5)+"px");">
imprimare (stea, războaie, jedi, stea-jedi+luke)
-- Ieșiri:
-- 8 bufnițe 21 181

Doar nu încercați să adăugați variabilele star and wars - încercarea de a adăuga 8 la „bufniță” nu vă va ajuta la nimic!

După cum ar fi trebuit să observați, numele unei variabile poate fi aproape orice: principalul lucru este că nu începe cu un număr. Serios, puteți chiar să declarați o variabilă numită print și apoi funcția de imprimare va înceta să mai funcționeze deoarece numele print se va referi la variabila nou declarată. Dar există un grup de cuvinte care sunt interzise să fie folosite ca nume de variabile - acestea sunt cuvinte cheie de limbă pe care nu le-am întâlnit încă, dar care merită cu siguranță aruncate o privire:

200?"200px":""+(this.scrollHeight+5)+"px");">
și rupe fac altceva dacă se termină
false pentru funcția goto if in
local nul nu sau returnare repetă
atunci adevărat până când

Prin crearea unei variabile cu unul dintre aceste nume, veți provoca o eroare în program și cu siguranță nu va funcționa. Vă rugăm să rețineți: în Lua 5.1 cuvânt cheie nu există goto și poți apela variabila în acest fel, dar mai bine nu faci asta.
De asemenea, rețineți că numele variabilelor țin cont de majuscule și minuscule. Aceasta înseamnă că foo, fOo, fOO și FOO sunt patru variabile diferite, deci dacă scrieți numele unei variabile literă mică, iar mai târziu a scris-o cu majuscule, atunci cel mai probabil programul nu va funcționa corect.

Și acum unul punct important: ce se întâmplă dacă, accidental sau intenționat, te referi la o variabilă inexistentă? În majoritatea celorlalte limbi, aceasta va genera o eroare, dar în Lua această situație este acceptabilă. Este tratată ca și cum o variabilă inexistentă ar exista de fapt, dar valoarea ei este zero. zero- amintește-ți acest cuvânt! este un tip special de valoare în Lua care înseamnă „nimic”. Nu zero și nu un șir gol (un șir ca „” - încercați să îl afișați pe ecran), dar pur și simplu nimic. Compară asta cu acest model: sunt două persoane, una dintre ele are un cont bancar, dar nu are bani, iar cealaltă nu are cont bancar deloc. În ceea ce privește Lua, se va considera că contul primului are 0 dolari, iar contul celui de-al doilea are zero. Și nici măcar dolari, ci pur și simplu zero. Sper că nu te-am încurcat.

Încercați, de exemplu, să rulați următorul program:

200?"200px":""+(this.scrollHeight+5)+"px");">
-- main.lua --
foo="bar"
print(foo, baz)
-- Ieșiri:
-- bar nul

Astfel, variabila baz, care nu există, dar se presupune că există, are valoarea nil, iar funcția de imprimare înțelege acest lucru și o tipărește pe ecran ca șirul „nil”. Lua are metoda buna verifică existența unei variabile: dacă valoarea unei variabile nu este egală cu zero, atunci aceasta este cel puțin declarată. Pe de altă parte, puteți declara în mod explicit o variabilă egală cu zero:

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

Acest lucru se poate face și, deși pare o prostie la prima vedere, asta se face uneori. În lecțiile ulterioare, vei afla cine și de ce și probabil vei începe să faci același lucru. Uneori, desigur.
Fiți atenți cu nil ": puteți tipări nil, dar faceți cu el operatii aritmetice este interzis! Adică, dacă print(nil) scapă cu asta, atunci un construct precum 99+nil va arunca o eroare, chiar dacă ai vrut ca 99+nil să fie egal cu 99. Crede-mă, am fost supărat când am aflat și eu.

Rezumat:
1. Am învățat despre funcția de imprimare, ce poate face și cum să o numim corect fără paranteze.
2. Am învățat cum să declarăm variabile, cum să evaluăm expresii (deși destul de puțin), ce nume pot avea variabilele.
3. A învățat despre nil, a pătruns cu misterul său mistic și a câștigat încrederea că în viitor o mulțime de lucruri vor fi legate de el.

Pentru cei care sunt curioși și doresc să-și consolideze cunoștințele, le ofer exerciții simple, care poate fi omis dacă vă simțiți deja suficient de competent:
1. Scrie un program care tipărește refrenul cântecului tău preferat.
2. Încercați să afișați valorile următoarelor expresii. Încercați să înțelegeți de ce unele dintre ele funcționează și altele nu. Vedeți ce erori sunt cauzate de expresiile rupte.

200?"200px":""+(this.scrollHeight+5)+"px");">
2 + „șir”;
6 + "14";
„cutie” - „vox”;
1 * „11b”
„148” * „1e6”;


3. Scrie un program care schimbă două valorile variabilelor. adica:

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


Faceți a egal cu 8086 și b egal cu 6502. Pentru a face acest lucru, creați o a treia variabilă și faceți permutări simple. Asigurați-vă că problema este rezolvată corect apelând print(a,b) înainte de schimb și print(a,b) după.

Top articole similare