Satura rādītājs
Funkcijas ir galvenais deklarāciju un izteicienu ieguves mehānisms Lua, viņi var veikt īpašus uzdevumus, kurus citās valodās lielākoties sauc par procedūrām vai apakšprogrammām.Funkcijas lielākoties tiek rakstītas ar iekavām un argumentu sarakstu, kas ļaus tai veikt noteiktu darbību, ja var gadīties, ka šīm funkcijām nav nepieciešami argumenti, tomēr iekavas ir jānorāda, skatīsim piemēru funkcijām, kuras mēs izmantojam kā izteiksmes iekšpusē Lua:
Kā redzam, mēs varētu izmantot funkcijas abos aprakstītajos veidos, taču ir īpašs gadījums, kad funkcijai ir viens arguments un šis arguments ir virkne burtiski vai tabulas vai masīva konstruktoru, šajā gadījumā iekavas nav obligātas, redzēsim:
print "Hello World" drukāt ("Hello World") dofile 'file.lua' dofile ('file.lua') print [[daudzrindu masīva ziņojums]] print ([[daudzrindu masīva ziņojums]]) f { var1 = 17, var2 = 30} f ({var1 = 17, var2 = 30}) tips {} tips ({})Saskaņā ar piemēru mēs varējām rakstīt funkcijas abos veidos, un tie bija vienlīdz derīgi.
Programma iekšā Lua Jūs varat izmantot funkcijas, kas definētas gan C, gan pašā valodā, piemēram, visas bibliotēkas standarta funkcijas Lua ir ierakstīti C, kas izstrādātājiem nav aktuāli, jo abu izsaukšanai nav atšķirību.
Zinot to, definīcija neatšķiras no citām valodām, funkcijas parasto sintaksi regulē funkcijas nosaukums, parametru saraksts un funkcijas pamatteksts, kas ir deklarāciju saraksts, apskatīsim piemēru ilustrē to, kas paskaidrots:
funkcijas darbība (var) vietējā summa = 0 summa = var + 6 atgriešanās summas beigasMums jau ir sava funkcija, tomēr šādā veidā tā nav īpaši noderīga, jo tā ir jāizsauc, nosūtot vajadzīgo parametru, lai to izsauktu, mēs savam kodam varam pievienot vēl vienu rindiņu:
funkcijas darbība (var) vietējā summa = 0 summa = var + 6 atgriešanās summas beigu drukāšana (darbība (57))Ja mēs izpildām savu piemēru mūsu terminālī, mēs varam redzēt, kā mūsu programma saņem parametru, un saskaņā ar mūsu funkcijā noteiktajām darbībām tā atgriež vērtību:
PALIELINĀT
Kaut ko mēs varam izcelt no funkcijām Lua, ir tas, ka parametri darbojas kā vietējie mainīgie, jo tie tiek inicializēti ar funkcijās izsaukumā saņemtajām vērtībām. Bez tam mēs varam izsaukt funkciju ar atšķirīgu funkcijā definētu argumentu skaitu, Lua pielāgojas tam tādā veidā, kā tas notiek ar vairākiem uzdevumiem - tēmu, kuru mēs apskatījām pēdējā apmācībā, kur papildu argumenti tiek atmesti un papildu parametri iegūst vērtības tipu nullePiemēram, iedomāsimies, ka mums ir šāda funkcija:funkcija multiple_function (a, b) atgriež a vai b beigasApskatīsim, kā nākamajā koda daļā mēs saucam funkciju ar dažādiem parametriem un labajā pusē, kā tiek veikta piešķiršana:
f (8) a = 8, b = nulle f (8, 15) a = 8, b = 15 f (8, 15, 4) a = 8, b = 15 (vērtība 4 tiek atmesta)Lai gan šāda rīcība var izraisīt programmēšanas kļūdas, tā ir arī noderīga, īpaši noklusējuma argumentiem.
Netradicionāla, bet diezgan noderīga iezīme Lua, ir iespēja atgriezt vairākus rezultātus, pat iepriekš noteiktas valodas funkcijas to var izdarīt. Piemērs tam ir funkcija virkne.atrast, kas meklē notikuma modeli noteiktā virknē, šī funkcija atgriež divus indeksus, pirmais ir indekss, no kura sākas šis modelis, un otrais ir vieta, kur tas beidzas, apskatīsim praktisku šīs funkcijas izmantošanas piemēru, ko mēs varam dariet to lieliski mūsu interaktīvajā konsolē:
Funkcijas, kurās mēs rakstām Lua viņi var arī atgriezties vairāki rezultāti, tāpēc mums tie ir jāuzskaita tikai pēc atgriešanās, apskatīsim piemēru, kurā mēs izveidojam funkciju, lai atrastu lielāko masīva elementu sarakstu un tā atrašanās vietu tajā:
funkcijas maksimālā vērtība (a) vietējais minimums = 1 vietējais m = a [minimums] i, val ipairs (a) darīt, ja val> m, tad minimālais = i; m = val beigu beigu atgriešanās m, minimālā beigu druka (maksimālā vērtība ({8,10,23,12,5}))Kā redzam, mūsu funkcija ir pavisam vienkārša, un atgriežoties tā atgriež divas vērtības, kuras šajā gadījumā saskaņā ar to, ko mēs sūtām, mums jāatgriež 23 kā lielākais skaitlis un 3 kā pozīcija, redzēsim:
PALIELINĀT
Papildus vairāku rezultātu atgriešanas funkcionalitātei Lua jūs varat arī saņemt a mainīgs argumentu skaits, piemēram, visu apmācību laikā mēs esam izmantojuši šo funkciju drukāt ar vienu, diviem un līdz trim argumentiem, tas ir, tā var saņemt mainīgu argumentu skaitu, bet, tā kā tas notiek, var arī tās funkcijas, kuras mēs izstrādājam Lua, Apskatīsim piemēru tam:funkcija example_function (…) local s = 0 i, v in ipairs {…} do s = s + v end return return s end print (example_function (8, 19, 30, 14, 10))Ja mēs esam novērotāji, definējot savu funkciju trīs punkti (…) iekavās tas norāda, ka mūsu funkcija pieņem mainīgu argumentu skaitu, un, kad funkcija tiek izsaukta, visi nosūtītie argumenti tiek apkopoti iekšēji un pēc tam apstrādāti ar funkciju ipairsApskatīsim mūsu funkcijas izlaidi, kas ir atbildīga par visu tai nosūtīto argumentu pievienošanu:
PALIELINĀT
Kā mēs redzam šo īpašību Lua Tas ir diezgan noderīgi, jo tas ļauj mums definēt savu funkciju, nezinot, cik argumentu tai nodosim, pat varam teikt, ka šī funkcionalitāte ir nedaudz līdzīga tai, kas tiek darīta ar sagatavoti paziņojumi apstrādāt darbības ar datu bāzi tādās valodās kā PHP vai Java.Tiek nosūtīti argumenti Lua tas ir pozicionāls, tas ir, kad mēs izsaucam funkciju, šie argumenti atbilst parametriem atbilstoši to pozīcijām, pirmais arguments atbilst pirmajam parametram un tā tālāk, lai gan dažreiz nenāktu par ļaunu norādīt argumentus pēc nosaukuma.
Šī funkcionalitāte ir līdzīga mainīgajiem argumentiem, taču, nosakot mūsu argumentu nosaukumus, to apstrāde ir daudz vienkāršāka, kur, izmantojot tikai tabulu vai izkārtojumu, mēs varam paveikt šo funkciju, kas ir ļoti noderīgi, ja mūsu funkcija izmanto dažus no šiem parametriem pēc izvēles apskatīsim šādu izsaukumu funkcijai, kas saņem noteiktu parametru skaitu loga izveidošanai:
create_window {x = 0, y = 0, width = 0, height = 200, title = 'Lua Window', background = "blue", robežas = true}Šādā veidā funkcija create_window Ja vēlaties, varat brīvi pārbaudīt šos argumentus pēc nosaukuma. Apskatīsim, kā mēs saņemam šos argumentus savā funkcijā un ko mēs ar to varam darīt:
funkcija create_window (opcijas) - pārbaudiet obligātās opcijas, ja ierakstiet (options.title) ~ = "string", tad kļūda ("bez nosaukuma") elseif tips (options.width) ~ = "number", tad kļūda ("nav platuma mēra") ) elseif tips (options.height) ~ = "numurs", tad kļūda ("bez augstuma mērīšanas") beidzas - mēs izmantojam opcijas create_window (options.title, options.x vai 0, options.y vai 0, options .width, opcijas.augstums, opcijas.fons vai "balts", opcijas.malas) BeigasKā redzam, mūsu programmās šīs iespējas ir daudz lielākas, un, lai gan šis piemērs ir ilustratīvs, tas ļauj mums redzēt, kā mēs varam izmantot nosauktos argumentus savās funkcijās.
Tādā veidā mēs beidzam šo apmācību, kurā uzzinājām, kā rīkoties ar funkcijām Lua, pārejot no tradicionālās sintakses, ko varam atrast citās valodās, līdz valodas īpašībām, piemēram, vairākiem rezultātiem, mainīgiem argumentiem un iespējai nosaukt argumentus, ko mēs nosūtām savām funkcijām. Tādā veidā mūsu programmām pievienojot daudz vairāk enerģijas, iekļaujot šāda veida funkcijas un saglabājot to vienkāršību Lua mēs esam pieraduši.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu