Užduotys ir kontrolės struktūros Lua

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:

Kaip matome, turime keletą paprastų užduočių pavyzdžių, kintamųjų vertės keitimą sujungimo operacijomis, aritmetika ar tiesiog rašydami reikšmes. Be to, Lua leidžia daugkartinį priskyrimą, kai reikšmių sąrašas priskiriamas kintamųjų sąrašui, kad šie sąrašai visada būtų atskirti kableliais, kad būtų tinkamai veikiama:

Kaip matėme var1 gavo skaitinę vertę ir var2 teksto reikšmę, tai pagal užduoties atlikimo tvarką. Jei esame stebėtojai, matome, kaip galime pakeisti abiejų kintamųjų reikšmes, o tai praverčia dirbant su funkcijomis.
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į:

Kaip matome, pirmieji du kintamieji gauna atitinkamas reikšmes, o paskutinis - automatiškai nulis kaip aiškinamės. Svarbu paminėti, kad kelios užduotys ne visada yra greitesnės už paprastas užduotis, tačiau jos leidžia mums padėti surinkti keletą grąžų iš funkcijų iškvietimo, kad būtų galima paminėti keletą.
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į:

Kaip matome šių kintamųjų deklaraciją, mes juos darome su rezervuotu žodžiu vietinisŠie kintamieji veikia bloke, kuriame jie buvo deklaruoti, pavyzdžiui, galime pasakyti, kad blokas gali būti valdymo struktūra arba funkcija, pažiūrėkime šį pavyzdį:
 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ą:

Nors mūsų programos valdymas gali būti ribotas, mes galime naudoti ribotuvus baigti Norėdami nurodyti bloką ir žinoti, kiek mūsų vietiniai kintamieji turi apimtį, pažiūrėkime pavyzdį, kaip tai padaryti:
 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:

Galime pabrėžti, kad vietinių kintamųjų naudojimas mūsų programose yra gera praktika, jie padeda mums neliesti pasaulinės aplinkos nereikalingais pavadinimais, taip pat, kad prieiga prie šių kintamųjų yra daug greitesnė nei tuo atveju, jei tai padarytume naudodami visuotinius kintamuosius. kintamieji išnyksta, kai tik jų taikymo sritis baigiasi, taip atlaisvinant vietos atmintyje, todėl rekomenduojame juos naudoti, kai tik įmanoma.
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“) pabaiga
Svarbu 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ą.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave