Всеки език се нуждае от нещо, което да го отличава от тълпата, нещо, което прави по-добре или дори различно от останалите, за да бъде забелязан. Тази публикация ще обхване това, което наистина отличава Lua от нормата и ще обхване основните препятствия, които Java програмистът ще трябва да преодолее, за да използва ефективно езика Lua. Темите са: Структура на изрази на парчета, таблици, функции и съпрограми.

Структура на изявление на парче

Дори начинаещ в езика Lua вероятно знае, че нямате нужда от точка и запетая, за да завършите израз. Но това, което може да изненада някои програмисти е, че изразите на Lua също не се прекратяват с прекъсване на реда. Вместо това Lua автоматично ще открие кога дадено изявление е „завършено“ въз основа на синтаксиса. Когато използвате самостоятелния интерпретатор на Lua, опитът да изпратите непълен отчет ще доведе до това програмата да ви подкани за повече информация. Това е показано чрез двойна ъглова скоба (››) в началото на линията. Когато предоставите пълно изявление, интерпретаторът ще изпълни вашия код, или както е известен в Lua, вашият „къс“. Всъщност една част може да бъде много повече от едно твърдение. Части от изпълним код могат да бъдат под формата на цели файлове или дори дълъг низ от валидни изрази, написани на командния ред. Това ви позволява да изпълнявате толкова или толкова малко код, колкото е необходимо.

Маси

Един неинформиран Java програмист вероятно ще погледне таблиците и ще помисли за масиви. Това не е погрешно, тъй като таблиците могат да се използват за масиви, но истинската сила на таблиците е, че те могат да се използват за много повече. Таблиците всъщност са ЕДИНСТВЕНАТА структура от данни в Lua и могат да се използват за почти всичко, за което имате нужда от структура от данни. Това включва масиви, списъци, опашки, съпоставяне на ключ-стойност и дори персонализирани пакети. Това е така, защото таблицата не е строго индексирана числено, въпреки че това се прави автоматично за масиви. Таблиците могат да бъдат индексирани с всеки тип данни, наличен в Lua, с изключение на nil. Таблиците също нямат фиксиран размер, така че елементи могат да се добавят и премахват свободно от таблица. Стандартната библиотека за таблици предоставя още повече функционалност на тези мощни обекти, така че един добър програмист ще разполага с всички необходими инструменти за структуриране на данни.

Функции

В Java бихте нарекли тези неща методи и те се използват за много от едни и същи неща. Има обаче няколко големи неща, които трябва да се отбележат. Първо, функциите са един от основните типове данни в Lua и следователно се присвояват на променливи като числа или низове. За щастие за лесната употреба, функция може да бъде дефинирана и в традиционен синтаксис. И двете от следните са идентични определения.

function cube(num)
return num*num*num
end
cube = function(num)
return num*num*num
end

Второ, на функциите е разрешено да връщат повече от една стойност. Това има много практически приложения както в потребителски дефинирани функции, така и в стандартните библиотеки. За да приемете множество върнати стойности, можете да използвате или множество присвоявания като това:

x,y,z = thisReturnsThree()

Или можете да заснемете резултатите в таблица, което може да бъде полезно за функции, които връщат неопределен брой резултати:

x = {thisReturnsMany()}

Coroutines

Coroutines е подходът на Lua към нишките. Когато се създаде нова съпрограма, вие ефективно сте създали малък страничен процес, който ще има свой собствен стек, променливи и програмен брояч. Въпреки това, не се заблуждавайте от подобната на нишка функционалност, защото съпрограммите НЕ се изпълняват едновременно, както нишката на Java. Превключването на управление на съпрограма се извършва чрез ръчно извикване на функцията за добив и след това възобновяване на друга съпрограма. Това ограничава тяхната полезност, но все пак има някои полезни приложения за тях.

Заключение

Имайки предвид тази информация, трябва да имате по-добро време, като използвате Lua в пълната му мощност. Сега, след като разбирате какво можете да очаквате от структурата, таблиците, функциите и съпрограммите на Lua; можете да продължите напред към правенето на страхотни неща в Lua.