Удаление пар с помощью nil
Часть раздела Fundamentals путешествия по Lua на Coddy — урок 69 из 90.
Когда вы присваиваете nil ключу, Lua фактически удаляет эту пару «ключ-значение» из таблицы:
local settings = {
["volume"] = 80,
["difficulty"] = "normal",
["music"] = true
}
-- Удаление настройки сложности
settings.difficulty = nil
-- Теперь ключ difficulty больше не существует в таблицеВы можете использовать либо точечную нотацию, либо нотацию в квадратных скобках, чтобы удалить пару «ключ-значение». Оба варианта settings.difficulty = nil и settings["difficulty"] = nil работают совершенно одинаково.
После присвоения nil ключу, этот ключ полностью исчезает из таблицы. Если вы попытаетесь обратиться к нему позже, вы получите nil в качестве результата, точно так же, как если бы ключа никогда не существовало.
Задание
ЛегкоСоздайте систему конфигурации игры, которая демонстрирует удаление нежелательных настроек из таблицы в стиле словаря. Начните с создания таблицы с именем gameConfig со следующими парами ключ-значение: ["graphics"] должно быть присвоено строковое значение "high", ["sound"] должно быть присвоено число 75, ["difficulty"] должно быть присвоено строковое значение "normal", а ["debug"] должно быть присвоено логическое значение true.
После создания начальной таблицы конфигурации удалите настройку debug, присвоив ей значение nil с помощью точечной нотации. Затем выведите оставшуюся настройку звука, чтобы убедиться, что таблица все еще содержит остальные значения.
Шпаргалка
Чтобы удалить пару «ключ-значение» из таблицы, присвойте ключу значение nil:
local settings = {
["volume"] = 80,
["difficulty"] = "normal",
["music"] = true
}
-- Удаление настройки сложности
settings.difficulty = nilВы можете использовать либо точечную нотацию, либо нотацию в квадратных скобках:
settings.difficulty = nil
settings["difficulty"] = nilПосле присвоения nil ключ полностью исчезает из таблицы. Обращение к нему возвращает nil.
Попробуйте сами
-- TODO: Напишите свой код здесь
-- Создайте таблицу gameConfig с необходимыми парами ключ-значение
-- Удалите настройку debug, используя точечную нотацию
-- Выведите настройку soundВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы 2: Сравнение и логика
Операторы равенстваОператоры сравненияОператор 'and'Оператор 'or'Оператор 'not'Сокращенные вычисленияЗначения Truthy и FalsyИтоги: Простая логика7Основы условной логики
Оператор if-thenОператор if-then-elseОператор elseifИтоги — Сундук с сокровищами10Таблицы, часть 1: Списки
Что такое таблица?Создание таблицыДоступ к элементам по индексуИзменение элементов по индексуОператор длины '#'table.insert()table.remove()Итоги: управление участниками группы13Проект: Простой магазин зелий
Настройка проектаДобавление зелья2Переменные и типы данных
Что такое переменная?ЧислаСтрокиБулевы значенияЗначение 'nil'Функция type()Правила именованияИтоги — Профиль персонажа5Базовый вывод
Вывод литераловВывод переменныхВывод нескольких значенийОбъединение строк и переменныхФункция tostring()ВводПриведение типовПовторение — Отчет о состоянииПовторение — До 1208Основы работы со строками
string.len()string.upper и string.lowerstring.sub()string.rep()string.find()Повторение — Форматирование имени пользователя11Таблицы 2: Словарный стиль
Пары ключ-значениеСоздание таблиц-словарейДоступ: квадратные скобкиДоступ через точечную нотациюДобавление и изменение парУдаление пар с помощью nilИтоги: свойства элементов3Операторы 1: Арифметика и конкатенация
Арифметические операторыОператор остатка от деленияОператор возведения в степеньКонкатенация строкПриоритет операторовПовторение: Простые вычисления6Проект: Вывод характеристик персонажа
Приветственное сообщениеОбъявление характеристик персонажа9Основы функций
Объявление функцииВызов функцииФункции с параметрамиФункции с несколькими параметрамиОператор 'return'Повторение — Калькулятор площади