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:
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
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 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
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
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