Преглед садржаја
У прошлим водичима видели смо како Луа омогућава руковање и вредностима и типовима на динамичан начин, увек се истичући својом једноставношћу и свестраношћу при извођењу ових операција.Али то није све Луа нуди у смислу једноставности, конвенционално подржава декларације које можемо пронаћи на језицима као у Ц. или ПасцалТамо гдје ове декларације подједнако укључују додјеле и структуре управљања, можемо чак наићи на неке неконвенционалне начине, попут вишеструких додјела и локалних декларација.
Задаци у Луа Изузетно су једноставни и раде на промени вредности променљиве у одређено време у оквиру нашег програма, погледајмо једноставан пример помоћу интерактивне конзоле Луа, које можемо унети постављањем резервисане речи луа На терминалу:
Као што видимо, имамо неке једноставне примере додељивања, промену вредности променљивих операцијама спајања, аритметичким или једноставно писањем вредности. Поред овога, Луа дозвољава вишеструко додељивање, где је листа вредности додељена листи променљивих, увек одвајајући ове листе зарезима за исправан рад:
Као што смо могли да видимо вар1 добио бројчану вредност и вар2 текстуална вредност, ово према редоследу којим је додељивање додељено. Ако смо посматрачи, видимо како можемо и наизменично мењати вредности обе променљиве, што нам добро дође када радимо са функцијама.
Луа чак можете подесити број вредности за број присутних променљивих, на пример ако је листа вредности мања од листе променљивих, додатним променљивим се даје тип вредности нула подразумевано као његове вредности, да видимо пример овог процеса:
Као што видимо, прве две променљиве добијају одговарајуће вредности, а последња од њих аутоматски прима нула како објашњавамо. Важно је напоменути да вишеструки задаци нису увек бржи од једноставних, али нам омогућавају да нам помогну да прикупимо више повратка из позива функције да наведемо само неке.
Поред глобалних променљивих, Луа Подржава локалне променљиве које, за разлику од глобалних, имају ограничен опсег, који зависи од блока у коме су декларисане, да видимо како декларишемо локалну променљиву:
Како видимо декларацију ових променљивих, радимо их са резервисаном речју локалнимОве променљиве функционишу у блоку у коме су декларисане, на пример можемо рећи да блок може бити контролна структура или функција, погледајмо следећи пример:
к = 10 лоцал и = 1 вхиле и <= к до лоцал к = и * 2 принт (к) и = и + 1 енд иф и> 20 тхен лоцал кк = 20 принт (к + 2) елсе принт (к) енд штампа (к)Ако извршимо исто у нашем терминалу, видећемо како резултат можда није онакав какав очекујемо, а то је зато што имамо различите блокове у којима користимо променљиве, да видимо резултат:
Иако контрола нашег програма може бити ограничена, можемо користити граничнике до-енд Да бисмо навели блок и знали колико наше локалне променљиве имају опсег, погледајмо пример где то можемо учинити:
до лоцал вар1 = 16 лоцал вар2 = вар1 + 20 к = 5 и = к + вар1 енд - Овде завршава опсег вар1 и вар2 принт (к, и) принт (вар1, вар2)Када га извршимо у нашем терминалу, видећемо да су променљиве к и и приказане без проблема јер су глобалне, али за вар1 и вар2 њихов опсег завршава блоком до-енд, Хајде да видимо:
Можемо нагласити да је употреба локалних променљивих у нашим програмима добра пракса, помажу нам да не додирујемо глобално окружење непотребним именима, такође да је приступ овим променљивим много бржи него да смо то учинили са глобалним променљивим и на крају овим променљиве нестају чим њихов опсег заврши, чиме се ослобађа меморијски простор, па препоручујемо њихову употребу кад год је то могуће.
Управљачке структуреКао и остали програмски језици, Луа пружа нам скуп контролних структура које можемо користити у нашим програмима, користећи добро познате ако да се носи са условима и док, понављање И за за итеративне петље, где осим понављање који има експлицитни терминатор све док а остали који се завршавају са крај.
Као и у већини програмских језика, декларација ако проверава стање и извршава део онда или део елсе, где ово друго може бити опционално, погледајмо скуп ових услова како се види у нашим програмима:
ако је вар1 <0, онда је вар1 = 0 крај ако је вар1 мак линија, тада прикажи () линије = 0 крајОвде имамо три врсте операција, основну са онда, користећи ретурн за враћање вредности према услову и нешто потпунијем делу кода који позива функцију. Осим овога можемо писати ако угнежђено коришћењем елсеиф, што нас штеди од потребе да користимо више Крајеви, да видимо како то изгледа:
ако је операција == " +" онда је резултат = а + б елсеиф операција == " -" онда резултат = а - б елсеиф операција == " *" онда је резултат = а * б елсеиф операција == "/" онда је резултат = а / б елсе еррор ("Инвалид оператион") ендВажно је напоменути да ово није само оптималније, већ је и потребно Луа нема декларације типа прекидач па ће ова врста угнежђених услова бити прилично честа у нашим програмима.
Као и на другим језицима, Луа прво процените стање док, ако је услов нетачан, петља се завршава и у супротном се извршавају следећи редови кода и процес се понавља све док услов није лажан, да видимо једноставан пример који то илуструје:
локални и = 1 док вар1 [и] не штампа (вар1 [и]) и = и + 1 крај
Ова изјава за разлику од док дозвољава нам да поновимо код унутар услова све док не буде истинит, при чему се чак и овај код може извршити бар једном пошто се евалуација услова врши на крају, да видимо пример:
поновите ред = ос.реад () док линија ~ = "" испис (линија)
Што се тиче итеративних циклуса за, Луа има две његове варијанте, за нумеричке и генерички за. Погледајмо синтаксу нумеричког за:
за вар = екп1, екп2, екп3 до крајаОва петља ће извршити нешто за сваку вредност вар фром екп1 све док екп2 Користећи екп3 као вредност за повећање вар или смањење, ако га не укључимо Луа подразумевано претпоставља да иде један по један, да видимо детаљнији пример ових циклуса:
за вар = 1, ф (к) уради штампање (вар) крај за вар2 = 10,1, -1 уради штампање (вар2) крајКако видимо да је његова примена прилично једноставна и омогућава нам да имплементирамо корисне итеративне циклусе у наше програме, сада да видимо синтаксу за генерички за:
фор и, вар ин ипаирс (арраи) до принт (вар) ендОвај циклус користи функцију коју нам даје Луа позив ипаирс, који је итератор низа, гдје за сваку итерацију и узима индекс, док вар добија вриједност повезану с тим индексом.
Као што видимо унутрашње изјаве Луа Не разликују се много од других језика, међутим језик додаје ту додатну једноставност која нам даје много брже учење његове синтаксе и много ефикаснију употребу. Овим смо завршили овај водич, где смо научили задатке и контролне структуре унутар Луа, додајући тако још један слој знања када је у питању овај једноставан, али моћан језик.