Funkcije u Lua

Sadržaj
Funkcije su glavni mehanizam za apstrahiranje deklaracija i izraza u Lua, mogu izvršavati posebne zadatke, koji se na drugim jezicima uglavnom nazivaju postupcima ili potprogramima.
Funkcije su većinom napisane s zagradama i popisom argumenata koji će joj omogućiti izvođenje određene radnje, gdje se može dogoditi da te funkcije ne trebaju argumente, međutim zagrade moraju biti navedene, da vidimo primjer funkcija koje koristimo kao unutrašnje izraze Lua:

Kao što vidimo, mogli bismo koristiti funkcije na oba opisana načina, ali postoji poseban slučaj gdje funkcija ima jedan argument i taj argument je string literal ili konstruktor za tablicu ili niz, u ovom slučaju zagrade su izborne, da vidimo:
 ispis "Hello World" print ("Hello World") dofile 'file.lua' dofile ('file.lua') print [[poruka s više redaka]] ispis ([[poruka s više redaka]]) f { var1 = 17, var2 = 30} f ({var1 = 17, var2 = 30}) tip {} tip ({})
Prema primjeru, funkcije smo mogli napisati na oba načina, pri čemu su oni jednako vrijedni.
Program u Lua Možete koristiti funkcije definirane i u C -u i u samom jeziku, na primjer, sve standardne funkcije u knjižnici Lua su napisani u C, što nije relevantno za programere, budući da pozivanje oboje nema razlike.
Znajući to, definicija se ne razlikuje od drugih jezika, konvencionalnom sintaksom funkcije upravlja naziv funkcije, popis parametara i tijelo funkcije, što je popis deklaracija, pogledajmo primjer za ilustrirajte ono što je objašnjeno:
 operacija funkcije (var) lokalni zbroj = 0 zbroj = var + 6 povratak zbroja kraj
Već imamo svoju funkciju, no na taj način nije jako korisna, jer je potrebno dozvati slanjem potrebnog parametra, za to možemo dodati još jedan redak u naš kôd kako bismo ga dozvali:
 funkcija funkcija (var) lokalni zbroj = 0 zbroj = var + 6 povratni zbroj kraj ispis (operacija (57))
Ako pokrenemo naš primjer u našem terminalu, možemo vidjeti kako naš program prima parametar i prema operacijama definiranim unutar naše funkcije vraća vrijednost:

POVEĆAJTE

Nešto što možemo istaknuti iz funkcija u Lua, je da parametri rade kao lokalne varijable, budući da su inicijalizirani s vrijednostima koje primaju u pozivu funkcije. Osim toga, možemo pozvati funkciju s različitim brojem argumenata definiranih u funkciji, Lua prilagođava se tome na način da to čini s višestrukim dodjeljivanjem, temom koju smo obradili u prošlom vodiču, gdje se dodatni argumenti odbacuju, a dodatni parametri dobivaju vrstu vrijednosti nula, na primjer zamislimo da imamo sljedeću funkciju:
 funkcija višestruka_funkcija (a, b) vraća a ili b kraj
Pogledajmo kako u sljedećem dijelu koda pozivamo funkciju s različitim parametrima, a s desne strane kako se dodjela izvodi:
 f (8) a = 8, b = n f (8, 15) a = 8, b = 15 f (8, 15, 4) a = 8, b = 15 (vrijednost 4 se odbacuje)
Iako ovo ponašanje može dovesti do programskih pogrešaka, također je korisno, osobito za zadane argumente.
Nekonvencionalna, ali vrlo korisna značajka Lua, je mogućnost vraćanja više rezultata, čak i unaprijed definirane jezične funkcije to mogu učiniti. Primjer za to je funkcija niz.nađi, koji traži obrazac pojavljivanja u danom nizu, ova funkcija vraća dva indeksa, prvi je indeks gdje ovaj uzorak počinje, a drugi je mjesto gdje završava, pogledajmo praktični primjer korištenja ove funkcije koji možemo učinite savršeno u našoj interaktivnoj konzoli:

Funkcije u koje pišemo Lua mogu se i vratiti više rezultata, za to ih moramo samo navesti nakon našeg povratka, pogledajmo primjer gdje stvaramo funkciju za lociranje najvećeg popisa elemenata u nizu i njegovog položaja u njemu:
 maksimalna vrijednost funkcije (a) lokalni minimum = 1 lokalni m = a [minimum] za i, val u ipairima (a) učiniti ako je val> m onda je minimum = i; m = povrat na kraju ventila m, minimalni ispis na kraju (maksimalna vrijednost ({8,10,23,12,5}))
Kao što vidimo, naša je funkcija prilično jednostavna i u povratku vraća dvije vrijednosti, koje bismo u ovom slučaju prema onome što šaljemo trebali vratiti 23 kao najveći broj i 3 kao poziciju, da vidimo:

POVEĆAJTE

Osim funkcionalnosti vraćanja više rezultata, Lua možete primiti i promjenjiv broj argumenata, na primjer tijekom tutoriala koristili smo ovu funkciju ispisati s jednim, dva i do tri argumenta, to jest, može primiti promjenjiv broj argumenata, ali kako to čini, mogu se i funkcije koje razvijamo u Lua, Pogledajmo primjer ovoga:
 function example_function (…) local s = 0 za i, v u ipairima {…} do s = s + v end return s end print (example_function (8, 19, 30, 14, 10))
Ako smo promatrači u definiciji naše funkcije imamo tri boda (…) unutar zagrada, to znači da naša funkcija prihvaća promjenjiv broj argumenata, a kada se funkcija pozove, svi poslani argumenti se prikupljaju interno i zatim obrađuju s funkcijom iparaPogledajmo izlaz naše funkcije koja je zadužena za dodavanje svih argumenata koji su joj poslani:

POVEĆAJTE

Kako vidimo ovu karakteristiku Lua To je vrlo korisno jer nam omogućuje definiranje naše funkcije bez znanja o tome koliko ćemo joj argumenata prenijeti, čak možemo reći da je ta funkcionalnost pomalo slična onoj koja se radi s pripremljene izjave za rukovanje operacijama s bazom podataka na jezicima poput PHP ili Java.
Slanje argumenata u Lua ona je pozicijska, to jest, kada pozovemo funkciju, ti argumenti odgovaraju parametrima prema njihovim pozicijama, prvi argument odgovara prvom parametru i tako dalje, iako ponekad ne bi škodilo navesti argumente po imenu.
Ova je funkcionalnost slična varijabilnim argumentima, no pri definiranju naziva za naše argumente njihovo je rukovanje mnogo jednostavnije, gdje samo pomoću tablice ili rasporeda možemo učiniti ovu funkciju, što je vrlo korisno ako naša funkcija koristi neke od ovih parametara opcionalno, pogledajmo sljedeći poziv funkciji koja prima određenu količinu parametara za izradu prozora:
 create_window {x = 0, y = 0, width = 0, height = 200, title = 'Lua Window', background = "blue", border = true}
Na ovaj način funkcija create_window Slobodno možete provjeriti ove argumente po imenu ako želite, da vidimo kako primamo te argumente u našu funkciju i što možemo učiniti s njima:
 funkcija create_window (options) - provjerite obavezne opcije ako je type (options.title) ~ = "string", zatim greška ("bez naslova"). ) elseif type (options.height) ~ = "number", zatim greška ("no height height") end - primjenjujemo opcije create_window (options.title, options.x ili 0, options.y ili 0, options .width, options.height, options.background ili "white", options.edges) End
Kao što vidimo, mogućnosti u našim programima puno su veće s ovom funkcionalnošću, pa iako je ovaj primjer ilustrativan, omogućuje nam vidjeti kako možemo primijeniti imenovane argumente unutar naših funkcija.
Ovako završavamo ovaj vodič u kojem smo naučili rukovati funkcijama Lua, prelazeći od konvencionalne sintakse koju možemo pronaći u drugim jezicima do karakteristika jezika kao što su višestruki rezultati, varijabilni argumenti i mogućnost imenovanja argumenata koje šaljemo našim funkcijama. Na taj način dodajući mnogo više snage našim programima uključivanjem ovih vrsta značajki i održavajući njihovu jednostavnost Lua navikli smo na to.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave