НА КОЛЕНКЕ

LUA — о чем нужно знать перед первым свиданием

LÖVE 5 января 2016, 21:07

Привет, программисты, давайте познакомимся с Lua. Не бойтесь, она хоть и со странностями, но с ней будет прикольно. И если с первого раза у вас ничего не получится — потом можете попробовать еще.

Я не буду залезать в справочники, а только расскажу о своем опыте общения с этой вертихвосткой. И пусть меня более опытные поправят, если я в чем-то ошибся. Писал с расчетом на программистов, к-е уже имеют опыт общения с другими языками программирования. Рассказывать что такое «переменная» и «цикл» я не хочу. И небольшими порциями, чтобы Вас и себя слишком не утомлять.

Итак, язык Lua очень похож на:

JavaScript — отсутствие строгой типизации (что присвоите символу, такой тип он и получит)

Pascal — почти все ключевые слова и конструкции (функции, циклы, условия)

C / C++ — способ записи массивов, хранение объектов по ссылкам и строки

Lisp — разделение всего на 2 сущности (список и символы)

Это плохо, в отличие от Си-подобных языков, когда вы часто пользуетесь разными языками и начинаете путаться.

Первое о чем вам нужно знать, если вы привыкли к Си и Си++:

1) Точку с запятой ; в конце ставить не обязательно. Одна строчка — одна команда. Если вам надо поставить неск. команд в одной строчке — разделяйте их ; .

2) Фигурные скобки < > нужны только для начала и конца «массива». Для блоков есть собственные конструкции:

функции: function. end

3) Нет итераторов. Только i = i + 1 и i = i — 1 .

Типы языка

Все в Lua делится на символы, таблицы и функции.

1) Символ — это что-то определенного типа. Простые переменные и строки хранятся напрямую («сырые» данные). Все остальное хранится по ссылкам.

2) Таблица. Это как массив, только в качестве индекса может быть не только число, а любой «сырой» символ. И буль и строка. Да, хэш-таблица и словарь, мне из 4-го ряда подсказывают.

Таблицы являются символами типа table .

3) Функция. Вообще-то это — тоже символ типа function. но интерпретируемый как код. В виду его важности я выделил его в отдельную сущность, т. к. с символом типа function нельзя выполнить никаких операций кроме чтения, вызова (возврат значения) и присваивания нового значения.

4) Данные. Это тип userdata. Это просто набор байтов, часто используемый в LÖVE как как картинки, звуки и прочие сущности. С ним ничего сделать нельзя, только получить от функции и передать в другую функцию.

Теперь чуть подробнее.

После объявления символа он лишь получает область видимости — локальный (local var1 ) или глобальный (var1 ), но сам останется пустым (nil ). Считайте что nil — это null в Си. После инициализации — тип и значение (local var1 = 1 ). Если вы задаете значение еще необъявленному символу, он автоматически создается и делается глобальным.

Тип символа можно поменять в любой момент, задав ему значение другого типа (var1 = 1; var1 = «hello» ). Тип символа возвращает функция type в виде строчки.

Таблицы объявляются по-элементно и разделяются запятой:

local google = <

name = «Google Inc.»,

[«str»] = «google»,

[1] = 1234,

[false] = nil

Как вы уже поняли google. name и google[«name»] — одно и тоже.

Строки могут заключаться как в одиночные, так и в двойные кавычки. Также есть и escape-последовательности.

Модули и область видимости

У Lua есть только глобальная и локальная область видимости. Тут все стандартно. Глобальные символы доступны для изменения отовсюду. Локальные символы будут видны только в том же файле, и строго ниже по тексту. Возможно это связано с тем что интерпретатор делает только 1 обход кода для экономии времени.

Если вы объявите локальный символ внутри блока (условие, функция, цикл), то он будет виден ниже только внутри него.

Подключение других файлов выполняется так:

This entry was posted in Перед первым свиданием. Bookmark the <a href="http://iseduction.ru/na-kolenke/" title="Permalink to НА КОЛЕНКЕ" rel="bookmark">permalink</a>.

Comments are closed.