Съдържание
Луа Това е динамичен език, когато става въпрос за типове данни и техните стойности, тоест няма дефиниции от какъвто и да е тип при създаване на променлива и уточняване, че тя е низ, число или дори булева стойност.Изразите вървят ръка за ръка със стойности, те ни позволяват да извършваме операции с тях, които могат да варират от аритметични, релационни и дори условни операции, за да придадат динамика на нашите програми, но преди да преминем към изрази, нека видим типовете стойности, които ние притежаваме в Луа и как работят в езика.
В Луа Всяка стойност зарежда свой собствен тип, в който можем да намерим осем различни типа от тях: нула, булева стойност, число, низ, потребителски данни, функция, нишка и таблица, където с функцията Тип () можем да знаем името на типа на дадената стойност. Нека видим един прост пример за това как Луа тълкувайте това според Тип ():
НямаТова е вид стойност, чието основно свойство е да се различава от другите стойности. Както видяхме в последния урок, глобалната променлива има стойността по подразбиране нула и ако искаме да го премахнем, присвояваме тази стойност, можем дори да я използваме, за да представим отсъствието на полезна стойност.
БулевБулевите стойности, както и в останалите езици за програмиране, имат две стойности, вярно и невярно, но за разлика от други езици, този тип данни няма общ домейн над условията, тъй като всеки може да представлява условие.
НомерТози тип данни представлява както цели числа, така и десетични знаци. Луа няма целочислен тип стойност и не се нуждае от него, тъй като Луа той може да представлява всяко 32-битово цяло число без проблеми със закръгляването, но най-интересното в езика е, че можем да го компилираме, за да използваме друг тип, като дълги цели числа или плаващи, което е доста полезно за случаите, когато хардуерът няма поддръжка за десетични знаци.
НизНизовете в Луа Те са последователност от знаци, те са неизменни стойности, тоест не можем да променим знак в низа. Те се обработват от автоматичната памет на езика, както и останалите обекти, а задаването на низа може да бъде с двойни или единични кавички.
ТаблицаТипът таблични данни реализира асоциативен масив, който е масив, който може да се индексира не само с числа, но и с низове или всяка друга езикова стойност, с изключение на нула. Таблиците нямат фиксиран размер, така че можем да включим колкото искаме елементи и с тях можем да представим модули, пакети и обекти. И накрая, създаването му е толкова просто, колкото използването на скобите {} при инициализация на таблицата.
ХарактеристикаФункциите в Луа те имат доста своеобразно поведение, можем да ги запишем в променливи, да ги предадем като аргументи на други функции и да ги върнем дори като резултати, където Луа можете да извикате тези функции, написани както на самия език, така и на C.
Потребителски данниВидът на данните потребителски данни позволява да се съхраняват в променливи на Луа произволна информация от C. Той няма предварително дефинирани операции върху Луа, с изключение на тестовете за присвояване и равенство, където основната функция на този тип е да представя нови типове като такива, създадени от приложение или библиотека, написана на C.
Както виждаме, типовете не се различават много от това, което можем да намерим в настоящите езици, но сигурно е, че простотата, която трябва да ги представим, е много по -голяма, тогава нека видим ролята на изразите и как можем да ги използваме с нашите ценности.
Аритметичните операции са изключително важни за всяка програма и е важно да знаем как да се справим с тях и какви ограничения могат да съществуват в езика, който използваме. Луа той поддържа конвенционалните оператори, с които сме свикнали: събиране, изваждане, умножение, деление, експоненциално, процентно и отрицателно.
Нека да видим тогава прост код, където демонстрираме използването на някои оператори на Луа:
x = 8 + 5 y = 9 - 2 печат (x * y% 0,01)Използваме събиране, изваждане и деление на 2 в резултат на операция за умножение, нека видим как реагира интерпретаторът, когато изпълняваме нашия код през конзолата:
Увеличете
Луа подобно на други езици, той ни дава релационни оператори като по-голямо от>, по-малко от <, по-малко или равно =, равно-равно == и отрицание ~ =. Виждаме, че единственото, което може би се различава, е отричането, но след като свикнем, няма да има проблеми с използването му.
Всички тези оператори могат да върнат true или false, където дори можем да приложим както оператора на равенството, така и оператора на отрицание към две стойности. Тези сравнения Луа прави ги въз основа на типа в допълнение към други фактори, нека видим в следния код къде сравнението се прави въз основа на същия обект:
a = {}; a.x = 1; a.y = 0 b = {}; b.x = 1; b.y = 0 c = aКогато, ако сравним същото, резултатът от операцията ни дава, че a е равно на c, но че a е различно от b, това се дължи на факта, че те са един и същ обект. Освен това трябва да сме много внимателни, когато сравняваме различни типове, тъй като например 6 е различно от "6" и ако правим нещо като "3" <"8" Луа това ще даде грешка, тъй като смесваме низовете.
Логическите оператори в Луа те са и, или и не. Когато се направи сравнение с помощта на тези оператори, първият аргумент ще бъде върнат, ако е невярен, в противен случай вторият ще бъде върнат.Да видим поредица от примери в интерактивната конзола, за да демонстрираме гореспоменатото.
Увеличете
Увеличете
И накрая, имаме конструкторите, които са изрази, които ни позволяват да създаваме и инициализираме таблици, за които тази функция е уникална Луа и това е един от най -универсалните и мощни механизми. Можем да използваме празен конструктор без проблем само със скобите {} което ще създаде празна таблица като такава. Те също могат да инициализират масиви или списъци, нека видим пример:
дни = {"неделя", "понеделник", "вторник", "сряда", "четвъртък", "петък", "събота"}Тук създаваме списък с дните от седмицата и ако искаме да получим достъп до неговите елементи, като посочим индекса на същия, който имаме, например за получаване на четвъртък това ще е индекс номер 5 или неделя ще бъде номер 1, от Луа Той не се инициализира на нула като останалите езици, нека да видим как изглежда, когато го стартираме в нашата конзола:
масив = {x = 26, y = 67}
Но е важно, за да получим достъп до неговите стойности, да направим препратката към индекса с двойни кавички за почивка, ще получим стойността нула, виждаме нашата операция в интерактивната конзола: