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:
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 krajVeć 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
funkcija višestruka_funkcija (a, b) vraća a ili b krajPogledajmo 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:
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
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
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) EndKao š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