Menu
Coddy logo textTech

Что такое метатаблица?

Часть раздела Логика и управление потоком путешествия по Lua на Coddy — урок 16 из 54.

Метатаблица — это просто обычная таблица Lua, но у неё есть специальное назначение. Когда вы прикрепляете метатаблицу к другой таблице (назовём её «основной» таблицей), вы можете изменить поведение этой основной таблицы при выполнении над ней определённых операций.

Подумайте об этом так: обычно, если вы попытаетесь сложить две таблицы вместе, используя оператор +, Lua не знает, что делать, и выдаст ошибку. Но с помощью метатаблицы вы можете определить, что означает сложение для ваших таблиц. Вы можете заставить её складывать соответствующие значения, объединять их содержимое или делать что-либо еще, что имеет смысл для вашей программы.

Метатаблицы работают путем определения специальных функций, называемых метаметодами. Эти метаметоды имеют специфические имена, начинающиеся с двух подчеркиваний, такие как __add для сложения или __index для поиска отсутствующих ключей. Когда Lua сталкивается с операцией над таблицей, у которой есть метатаблица, она проверяет, есть ли в метатаблице соответствующий метаметод, и использует его, чтобы определить, что должно произойти.

Эта концепция открывает такие возможности, как создание пользовательских типов данных с их собственным поведением, реализация объектно-ориентированных паттернов, защита таблиц от нежелательных изменений и многое другое. В следующих уроках вы узнаете, как прикреплять метатаблицы к таблицам и использовать метаметоды для настройки их поведения.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком