Menu
Coddy logo textTech

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

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

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

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

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

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

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

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

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

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Lua