Menu
Coddy logo textTech

Итоги — Таблица только для чтения

Часть раздела Logic & Flow путешествия по Lua на Coddy — урок 23 из 54.

challenge icon

Задание

Легко

Напишите функцию makeReadOnly, которая принимает original и возвращает версию таблицы, доступную только для чтения.

Создайте прокси-таблицу с метатаблицей, которая позволяет чтение из исходной таблицы, но предотвращает любые изменения.

Логика:

  • Создайте пустую прокси-таблицу
  • Создайте метатаблицу с __index, указывающим на исходную таблицу (чтобы разрешить чтение)
  • Добавьте __newindex в метатаблицу, который ничего не делает (чтобы заблокировать изменения)
  • Прикрепите метатаблицу к прокси-таблице с помощью setmetatable()
  • Верните прокси-таблицу

Параметры:

  • original (table): Таблица, которую нужно защитить от изменений

Возвращает: Прокси-таблицу, обеспечивающую доступ только для чтения к исходной таблице (table)

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

function makeReadOnly(original)
    -- Напишите код здесь
end

Все уроки раздела Logic & Flow