Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программирование на языке Lua

Покупка
Артикул: 487729.04.99
Доступ онлайн
519 ₽
В корзину
Книга посвящена одному из самых популярных встраиваемых языков — Lua. Этот язык использовался во многих играх и большом количестве различных приложений. Язык сочетает небольшой объем занимаемый памяти, высокое быстродействие, простоту использования и большую гибкость. Книга рассматривает практически все аспекты использования Lua, начиная с основ языка и заканчивая тонкостями расширения языка и взаимодействия с С. Важной особенностью книги является огромный спектр охватываемых тем — практически все, что может понадобиться при использовании Lua. Также к каждой главе дается несколько упражнений, позволяющих проверить свои знания. Книга будет полезна широкому кругу программистов и разработчиков игр. Для понимания последних глав книги необходимо знание языка С, но для большинства остальных глав достаточно базовых знаний о программировании.
Иерузалимски, Р. Программирование на языке Lua : практическое руководство / Р. Иерузалимски ; пер. с англ. А. В. Борескова. - 4-е изд. - Москва : ДМК Пресс, 2023. - 383 с. - ISBN 978-5-89818-317-2. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2102604 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Роберту Иерузалимски

Программирование 
на языке Lua

Programming 
in Lua

Third Edition

ROBERTO IERUSALIMSCHY

PUC-RIO, BRAZIL
RIO DE JANEIRO

Москва, 2023

РОБЕРТУ ИЕРУЗАЛИМСКИ

Программирование 
на языке Lua

4-е издание, электронное

УДК 004.432.42Lua
ББК 32.973.28-018.1
И30

И30
Иерузалимски, Роберту.
Программирование на языке Lua / Р. Иерузалимски ; пер. с англ. А. В. Борескова. — 4-е изд., эл. — 1 файл pdf : 384 с. — Москва : ДМК Пресс, 2023. — 
Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; 
экран 10". — Текст : электронный.
ISBN 978-5-89818-317-2
Книга посвящена одному из самых популярных встраиваемых языков — Lua. 
Этот язык использовался во многих играх и большом количестве различных приложений. Язык сочетает небольшой объем занимаемый памяти, высокое быстродействие, простоту использования и большую гибкость. Книга рассматривает практически все аспекты использования Lua, начиная с основ языка и заканчивая тонкостями расширения языка и взаимодействия с С.
Важной особенностью книги является огромный спектр охватываемых тем — 
практически все, что может понадобиться при использовании Lua. Также к каждой 
главе дается несколько упражнений, позволяющих проверить свои знания.
Книга будет полезна широкому кругу программистов и разработчиков игр. Для 
понимания последних глав книги необходимо знание языка С, но для большинства 
остальных глав достаточно базовых знаний о программировании.

УДК 004.432.42Lua 
ББК 32.973.28-018.1

Электронное издание на основе печатного издания: Программирование на языке Lua / Р. Иерузалимски ; пер. с англ. А. В. Борескова. — 3-е изд. — Москва : ДМК Пресс, 2014. — 382 с. — 
ISBN 978-5-94074-767-3. — Текст : непосредственный.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было 
форме и какими бы то ни было средствами без  письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических 
ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность 
приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами 
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.

ISBN 978-5-89818-317-2
© 2013, 2003 by Roberto Ierusalimschy
©  Оформление, перевод на русский язык  
ДМК Пресс, 2014

ОГЛАВЛЕНИЕ

Введение ........................................................ 12
Аудитория ............................................................................... 14
О третьем издании .................................................................. 15
Другие ресурсы ....................................................................... 16
Некоторые типографские соглашения ..................................... 17
Запуск примеров ..................................................................... 17
Благодарности ........................................................................ 18

ЧАСТЬ I
Язык ............................................................... 19

Глава 1. Начинаем ............................................ 20
1.1. Блоки ................................................................................ 20
1.2. Некоторые лексические соглашения ................................. 22
1.3. Глобальные переменные ................................................... 24
1.4. Отдельный интерпретатор ................................................ 24
Упражнения ............................................................................. 26

Глава 2. Типы и значения .................................... 27
2.1. Nil ..................................................................................... 28
2.2. Boolean (логические значения) ......................................... 28
2.3. Числа ................................................................................ 28
2.4. Строки .............................................................................. 30
Литералы .....................................................................................30
Длинные строки ...........................................................................32
Приведения типов ........................................................................33
2.5. Таблицы ............................................................................ 34
2.6. Функции ............................................................................ 38
2.7. userdata и нити .................................................................. 38
Упражнения ............................................................................. 39

Глава 3. Выражения .......................................... 40
3.1. Арифметические операторы ............................................. 40
3.2. Операторы сравнения ....................................................... 41
3.3. Логические операторы ...................................................... 42

Оглавление

3.4. Конкатенация .................................................................... 43
3.5. Оператор длины ................................................................ 43
3.6. Приоритеты операторов ................................................... 45
3.7. Конструкторы таблиц ........................................................ 46
Упражнения ............................................................................. 48

Глава 4. Операторы ........................................... 49
4.1. Операторы присваивания ................................................. 49
4.2. Локальные переменные и блоки ........................................ 50
4.3. Управляющие конструкции ............................................... 52
if then else .....................................................................................53
while .............................................................................................53
repeat ...........................................................................................54
Числовой оператор for ..................................................................54
Оператор for общего вида ............................................................55
4.4. break, return и goto ............................................................ 57
Упражнения ............................................................................. 60

Глава 5. Функции .............................................. 62
5.1. Множественные результаты .............................................. 64
5.2. Функции с переменным числом аргументов ...................... 68
5.3. Именованные аргументы .................................................. 70
Упражнения ............................................................................. 72

Глава 6. Еще о функциях .................................... 73
6.1. Замыкания ........................................................................ 75
6.2. Неглобальные функции ..................................................... 79
6.3. Оптимизация хвостовых вызовов ...................................... 82
Упражнения ............................................................................. 83

Глава 7. Итераторы и обобщенный for .................. 85
7.1. Итераторы и замыкания .................................................... 85
7.2. Семантика обобщенного for .............................................. 87
7.3. Итераторы без состояния ................................................. 89
7.4. Итераторы со сложным состоянием .................................. 91
7.5. Подлинные итераторы (true iterarators) .............................. 93
Упражнения ............................................................................. 94

Глава 8. Компиляция, выполнение и ошибки ......... 96
8.1. Компиляция ...................................................................... 96
8.2. Предкомпилированный код ............................................. 100
8.3. Код на С .......................................................................... 102
8.4. Ошибки ........................................................................... 103
8.5. Обработка ошибок и исключений .................................... 105


Оглавление

8.6. Сообщения об ошибках и стек вызовов ........................... 106
Упражнения ........................................................................... 108

Глава 9. Сопрограммы ..................................... 110
9.1. Основы сопрограмм ....................................................... 110
9.2. Каналы и фильтры ........................................................... 113
9.3. Сопрограммы как итераторы .......................................... 117
9.4. Невытесняющая многонитевость .................................... 119
Упражнения ........................................................................... 124

Глава 10. Законченные примеры ....................... 125
10.1. Задача о восьми королевах ........................................... 125
10.2. Самые часто встречающиеся слова .............................. 127
10.3. Цепь Маркова ............................................................... 129
Упражнения ........................................................................... 131

ЧАСТЬ II
Таблицы и объекты.......................................... 133

Глава 11. Структуры данных ............................. 134
11.1. Массивы ....................................................................... 134
11.2. Матрицы и многомерные массивы ................................ 135
11.3. Связанные списки ......................................................... 137
11.4. Очереди и двойные очереди ......................................... 138
11.5. Множества и наборы ..................................................... 139
11.6. Строчные буферы ......................................................... 141
11.7. Графы ........................................................................... 142
Упражнения ........................................................................... 144

Глава 12. Файлы данных и персистентность ........ 146
12.1. Файлы с данными .......................................................... 146
12.2. Сериализация ............................................................... 148
Сохранение таблиц без циклов .................................................151
Сохранение таблиц с циклами ..................................................152
Упражнения ........................................................................... 155

Глава 13. Метатаблицы и метаметоды ............... 156
13.1. Арифметические метаметоды ....................................... 157
13.2. Метаметоды сравнения................................................. 160
13.3. Библиотечные метаметоды ........................................... 161
13.4. Метаметоды для доступа к таблице ............................... 162
Метаметод __index ...................................................................163
Метаметод __newindex .............................................................164
Таблицы со значениями по умолчанию .....................................165

Оглавление

Отслеживание доступа к таблице .............................................166
Таблицы, доступные только для чтения .....................................168
Упражнения ........................................................................... 169

Глава 14. Окружение ....................................... 170
14.1. Глобальные переменные с динамическими именами..... 170
14.2. Описания глобальных переменных ................................ 172
14.3. Неглобальные окружения .............................................. 174
14.4. Использование _ENV ..................................................... 176
14.5. _ENV и load .................................................................... 179
Упражнения ........................................................................... 181

Глава 15. Модули и пакеты ............................... 182
15.1. Функция require ............................................................. 184
Переименовывание модуля ......................................................185
Поиск по пути ...........................................................................186
Искатели файлов ......................................................................187
15.2. Стандартный подход для написания модулей на Lua ..... 188
15.3. Использование окружений ............................................ 190
15.4. Подмодули и пакеты ...................................................... 192
Упражнения ........................................................................... 193

Глава 16. Объектно-ориентированное 
программирование ......................................... 195
16.1. Классы .......................................................................... 197
16.2. Наследование ............................................................... 199
16.3. Множественное наследование ...................................... 201
16.4. Скрытие ........................................................................ 203
16.5. Подход с единственным методом ................................. 205
Упражнения ........................................................................... 206

Глава 17. Слабые таблицы и финализаторы ........ 208
17.1. Слабые таблицы ............................................................ 208
17.2. Функции с кэшированием ............................................. 210
17.3. Атрибуты объекта .......................................................... 212
17.4. Опять таблицы со значениями по умолчанию ................ 213
17.5. Эфемерные таблицы ..................................................... 215
17.6. Финализаторы .............................................................. 216
Упражнения ..............................................................................220

ЧАСТЬ III
Стандартные библиотеки ................................. 221

Глава 18. Математическая библиотека ............... 222

Оглавление

Упражнения ........................................................................... 223

Глава 19. Библиотека для побитовых операций ... 224
Упражнения ........................................................................... 227

Глава 20. Библиотека для работы с таблицами .... 228
20.1. Функции insert и remove ................................................ 228
20.2. Сортировка ................................................................... 229
20.3. Конкатенация ................................................................ 230
Упражнения ........................................................................... 231

Глава 21. Библиотека для работы со строками ..... 232
21.1. Основные функции для работы со строками .................. 232
21.2. Функции для работы с шаблонами ................................ 235
Функция string.find ...................................................................235
Функция string.match ................................................................236
Функция string.gsub ..................................................................236
Функция string.gmatch ..............................................................237
21.3. Шаблоны ....................................................................... 238
21.4. Захваты ......................................................................... 242
21.5. Замены ......................................................................... 245
Кодировка URL .........................................................................246
Замена табов ...........................................................................248
21.6. Хитрые приемы ............................................................. 249
21.7. Юникод ......................................................................... 252
Упражнения ........................................................................... 255

Глава 22. Библиотека ввода/вывода .................. 256
22.1. Простая модель ввода/вывода ...................................... 256
22.2. Полная модель ввода/вывода ....................................... 260
Небольшой прием для увеличения быстродействия .................261
Бинарные файлы ......................................................................262
22.3. Другие операции над файлами ..................................... 264
Упражнения ........................................................................... 266

Глава 23. Библиотека функций операционной 
системы ........................................................ 267
23.1. Дата и время ................................................................. 267
23.2. Другие вызовы системы ................................................ 270
Упражнения ........................................................................... 271

Глава 24. Отладочная библиотека ...................... 272
24.1. Возможности по доступу (интроспекции) ...................... 272
Доступ к локальным переменным .............................................275
Доступ к нелокальным переменным .........................................276

Оглавление

Доступ к другим сопрограммам ...............................................277
24.2. Ловушки (hooks) ............................................................ 278
24.3. Профилирование .......................................................... 279
Упражнения ........................................................................... 282

ЧАСТЬ IV
С АPI ............................................................. 283

Глава 25. Обзор C API ...................................... 284
25.1. Первый пример ............................................................. 286
25.2. Стек .............................................................................. 288
Помещение элементов на стек .................................................290
Обращение к элементам ..........................................................291
Другие операции со стеком ......................................................294
25.3. Обработка ошибок в C API ............................................. 295
Обработка ошибок в коде приложения .....................................296
Обработка ошибок в коде библиотек ........................................296
Упражнения ........................................................................... 297

Глава 26. Расширение вашего приложения ......... 298
26.1. Основы ......................................................................... 298
26.2. Работа с таблицами ...................................................... 300
26.3. Вызовы функций на Lua ................................................. 305
26.4. Обобщенный вызов функции ......................................... 307
Упражнения ........................................................................... 309

Глава 27. Вызываем С из Lua ............................ 310
27.1. Функции на С ................................................................ 310
27.2. Продолжения ................................................................ 313
27.3. Модули на С .................................................................. 316
Упражнения ........................................................................... 318

Глава 28. Приемы написания функций на С ......... 320
28.1. Работа с массивами ...................................................... 320
28.2. Работа со строками ....................................................... 322
28.3. Сохранение состояния в функциях на С ......................... 326
Реестр ......................................................................................326
Значения, связанные с функцией .............................................329
Значения, связанные с функцией, используемые 
несколькими функциями ..........................................................332
Упражнения ........................................................................... 333

Глава 29. Задаваемые пользователем типы в С ... 334
29.1. Пользовательские данные (userdata) ............................. 335
29.2. Метатаблицы ................................................................ 337

Доступ онлайн
519 ₽
В корзину