Съдържание
Луа Това е динамичен език, когато става въпрос за типове данни и техните стойности, тоест няма дефиниции от какъвто и да е тип при създаване на променлива и уточняване, че тя е низ, число или дори булева стойност.Изразите вървят ръка за ръка със стойности, те ни позволяват да извършваме операции с тях, които могат да варират от аритметични, релационни и дори условни операции, за да придадат динамика на нашите програми, но преди да преминем към изрази, нека видим типовете стойности, които ние притежаваме в Луа и как работят в езика.
В Луа Всяка стойност зарежда свой собствен тип, в който можем да намерим осем различни типа от тях: нула, булева стойност, число, низ, потребителски данни, функция, нишка и таблица, където с функцията Тип () можем да знаем името на типа на дадената стойност. Нека видим един прост пример за това как Луа тълкувайте това според Тип ():
Тъй като виждаме, че типът се дава от стойността, която зарежда и определената функция ни помага да знаем какво представлява, можем да видим, че дори в последния случай на променливата H резултатът е низ и това е така, защото функцията Тип () винаги е низ. Откакто видяхме как Луа интерпретирайте типовете данни, нека разгледаме всеки от тях подробно:
НямаТова е вид стойност, чието основно свойство е да се различава от другите стойности. Както видяхме в последния урок, глобалната променлива има стойността по подразбиране нула и ако искаме да го премахнем, присвояваме тази стойност, можем дори да я използваме, за да представим отсъствието на полезна стойност.
БулевБулевите стойности, както и в останалите езици за програмиране, имат две стойности, вярно и невярно, но за разлика от други езици, този тип данни няма общ домейн над условията, тъй като всеки може да представлява условие.
НомерТози тип данни представлява както цели числа, така и десетични знаци. Луа няма целочислен тип стойност и не се нуждае от него, тъй като Луа той може да представлява всяко 32-битово цяло число без проблеми със закръгляването, но най-интересното в езика е, че можем да го компилираме, за да използваме друг тип, като дълги цели числа или плаващи, което е доста полезно за случаите, когато хардуерът няма поддръжка за десетични знаци.
НизНизовете в Луа Те са последователност от знаци, те са неизменни стойности, тоест не можем да променим знак в низа. Те се обработват от автоматичната памет на езика, както и останалите обекти, а задаването на низа може да бъде с двойни или единични кавички.
ТаблицаТипът таблични данни реализира асоциативен масив, който е масив, който може да се индексира не само с числа, но и с низове или всяка друга езикова стойност, с изключение на нула. Таблиците нямат фиксиран размер, така че можем да включим колкото искаме елементи и с тях можем да представим модули, пакети и обекти. И накрая, създаването му е толкова просто, колкото използването на скобите {} при инициализация на таблицата.
ХарактеристикаФункциите в Луа те имат доста своеобразно поведение, можем да ги запишем в променливи, да ги предадем като аргументи на други функции и да ги върнем дори като резултати, където Луа можете да извикате тези функции, написани както на самия език, така и на C.
Потребителски данниВидът на данните потребителски данни позволява да се съхраняват в променливи на Луа произволна информация от C. Той няма предварително дефинирани операции върху Луа, с изключение на тестовете за присвояване и равенство, където основната функция на този тип е да представя нови типове като такива, създадени от приложение или библиотека, написана на C.
Както виждаме, типовете не се различават много от това, което можем да намерим в настоящите езици, но сигурно е, че простотата, която трябва да ги представим, е много по -голяма, тогава нека видим ролята на изразите и как можем да ги използваме с нашите ценности.
Аритметичните операции са изключително важни за всяка програма и е важно да знаем как да се справим с тях и какви ограничения могат да съществуват в езика, който използваме. Луа той поддържа конвенционалните оператори, с които сме свикнали: събиране, изваждане, умножение, деление, експоненциално, процентно и отрицателно.
Нека да видим тогава прост код, където демонстрираме използването на някои оператори на Луа:
x = 8 + 5 y = 9 - 2 печат (x * y% 0,01)Използваме събиране, изваждане и деление на 2 в резултат на операция за умножение, нека видим как реагира интерпретаторът, когато изпълняваме нашия код през конзолата:
Увеличете
Както можем да видим, Lua не се различава много от останалите езици за аритметични операции, но неговата простота за писане на код го прави доста лесен за работа при разработване на програми.Луа подобно на други езици, той ни дава релационни оператори като по-голямо от>, по-малко от <, по-малко или равно =, равно-равно == и отрицание ~ =. Виждаме, че единственото, което може би се различава, е отричането, но след като свикнем, няма да има проблеми с използването му.
Всички тези оператори могат да върнат 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}
Но е важно, за да получим достъп до неговите стойности, да направим препратката към индекса с двойни кавички за почивка, ще получим стойността нула, виждаме нашата операция в интерактивната конзола:
С това приключваме урока, където можем да видим това Луа разширява своята простота до всички ръбове, които го съставят, от динамичните типове, с които борави, простия начин за извършване на задания, боравенето с релационни и логически оператори, както и ни предоставя изключително полезни инструменти като конкатенации и конструктори, за да направим нашите опит с езика възможно най -приятен и приятен.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка