Turinys
Ankstesnėse pamokose matėme, kaip Lua leidžia dinamiškai valdyti ir vertes, ir tipus, atliekant šias operacijas visada išsiskiria paprastumu ir universalumu.Bet tai nėra visi Lua paprastumo požiūriu, jis tradiciškai palaiko deklaracijas, kurias galime rasti tokiomis kalbomis kaip C arba PaskalisKai šiose deklaracijose yra ir užduočių, ir kontrolės struktūrų, galime net suklupti netradiciniais būdais, pvz., Daugybe paskyrimų ir vietinėmis deklaracijomis.
Užduotys Lua Jie yra labai paprasti ir padeda keisti kintamojo vertę tam tikru metu mūsų programoje, pažiūrėkime paprastą pavyzdį naudojant interaktyvią konsolę Lua, kurią galime įvesti įdėdami rezervuotą žodį lua Terminale:
Lua netgi galite koreguoti esamų kintamųjų skaičių verčių skaičių, pavyzdžiui, jei reikšmių sąrašas yra mažesnis už kintamųjų sąrašą, papildomiems kintamiesiems suteikiamas vertės tipas nulis pagal numatytuosius nustatymus kaip jo vertės, pažiūrėkime šio proceso pavyzdį:
Be pasaulinių kintamųjų, Lua Jis palaiko vietinius kintamuosius, kurie, skirtingai nuo globalių, turi ribotą taikymo sritį, kuri priklauso nuo bloko, kuriame jie buvo paskelbti, pažiūrėkime, kaip deklaruojame vietinį kintamąjį:
x = 10 vietinis i = 1, o i <= x daryti vietinį x = i * 2 spausdinti (x) i = i + 1 galas, jei i> 20, tada vietinis xx = 20 spausdinti (x + 2) kitaip spausdinti (x) galas spausdinti (x)Jei savo terminale vykdysime tą patį, pamatysime, kaip rezultatas gali būti ne toks, kokio tikėjomės, ir taip yra todėl, kad turime skirtingus blokus, kuriuose naudojame kintamuosius, pažiūrėkime rezultatą:
do local var1 = 16 local var2 = var1 + 20 x = 5 y = x + var1 end - Čia baigiasi var1 ir var2 spausdinimo apimtis (x, y) print (var1, var2)Vykdydami jį savo terminale pamatysime, kad kintamieji x ir y rodomi be jokių problemų, nes jie yra globalūs, tačiau var1 ir var2 jų apimtis baigiasi bloku baigti, Pažiūrėkime:
Valdymo struktūrosKaip ir visos kitos programavimo kalbos, Lua suteikia mums valdymo struktūrų rinkinį, kurį galime naudoti savo programose, naudodami gerai žinomą jei tvarkyti sąlygas ir tuo tarpu, kartoti Y dėl iteracinėms kilpoms, išskyrus kartoti kuris turi aiškų terminatorių iki o kiti baigiasi galas.
Kaip ir daugelyje programavimo kalbų, deklaracija jei patikrina būklę ir įvykdo dalį tada arba dalis Kitas, kur pastaroji gali būti neprivaloma, pažiūrėkime šių sąlygų rinkinį, kaip matyti mūsų programose:
jei var1 <0, tada var1 = 0 pabaiga, jei var1 max eilutės, tada parodykite () eilutes = 0 pabaigosČia mes turime trijų tipų operacijas, pagrindinę operaciją tada, naudojant grįžimą, norint grąžinti vertę pagal sąlygą ir šiek tiek išsamesnę kodo dalį, kuri iškviečia funkciją. Be to, galime rašyti jei įdėtas naudojant elseif, o tai neleidžia mums naudoti kelių baigiasi, pažiūrėkime, kaip tai atrodo:
jei operacija == " +", tada rezultatas = a + b elseif operacija == " -" tada rezultatas = a - b elseif operacija == " *" tada rezultatas = a * b elseif operacija == "/" tada rezultatas = a / b else error („Netinkama operacija“) pabaigaSvarbu pažymėti, kad tai ne tik optimaliau, bet ir būtina Lua neturi tipo deklaracijų jungiklis todėl tokio tipo įdėtos sąlygos bus gana įprastos mūsų programose.
Kaip ir kitomis kalbomis, Lua pirmiausia įvertinkite būklę tuo tarpu, jei sąlyga yra klaidinga, ciklas baigiasi ir priešingu atveju vykdomos šios kodo eilutės ir procesas kartojamas tol, kol sąlyga yra klaidinga, pažiūrėkime paprastą pavyzdį, kaip tai iliustruoti:
vietinis i = 1, o var1 [i] spausdina (var1 [i]) i = i + 1 galas
Šis teiginys, skirtingai nei tuo tarpu leidžia mums pakartoti kodą sąlygoje, kol jis bus teisingas, kur net ir šis kodas gali būti įvykdytas bent kartą, nes būklės įvertinimas atliekamas pabaigoje, pažiūrėkime pavyzdį:
kartoti eilutę = os.read (), kol eilutė ~ = "" spausdinti (eilutė)
Kalbant apie pasikartojančius ciklus dėl, Lua turi du jo variantus, už skaičių ir bendras, skirtas. Pažvelkime į skaitmenų sintaksę:
jei var = exp1, exp2, exp3 baigiasiŠi kilpa vykdys kažką kiekvienai reikšmei var nuo exp1 iki exp2 naudojant exp3 kaip reikšmę padidinti arba sumažinti, jei jo neįtrauksime Lua pagal nutylėjimą manoma, kad jis vyksta po vieną, pažiūrėkime išsamesnį šių ciklų pavyzdį:
jei var = 1, f (x) spausdinkite (var) pabaigą, kai var2 = 10,1, -1 spausdinkite (var2) galąKaip matome, jo taikymas yra gana paprastas ir leidžia mums įgyvendinti naudingus iteracinius ciklus savo programose, dabar pažiūrėkime sintaksę bendras, skirtas:
i, var ipairs (masyvas) spausdina (var)Šis ciklas naudoja mums suteiktą funkciją Lua skambinti ipairs, kuris yra masyvų iteratorius, kur kiekvienai iteracijai i imamas indeksas, o var gauna su tuo indeksu susijusią vertę.
Kaip matome teiginius viduje Lua Jie mažai kuo skiriasi nuo kitų kalbų, tačiau kalba priduria, kad papildomas paprastumas suteikia mums daug greitesnį jos sintaksės mokymąsi ir daug efektyvesnį naudojimą. Tuo baigiame šią pamoką, kurioje išmokome užduotis ir valdymo struktūras Lua, taip pridedant dar vieną žinių sluoksnį, kai kalbama apie šią paprastą, bet galingą kalbą.