Menu
Coddy logo textTech

Добавление и изменение пар

Часть раздела Fundamentals путешествия по Lua на Coddy — урок 68 из 90.

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

local player = {
    ["name"] = "Alex",
    ["level"] = 5
}

-- Добавить новую пару ключ-значение
player.gold = 100

-- Изменить существующее значение
player.level = 6

Прелесть этого подхода в том, что Lua не делает различий между добавлением и изменением. Если ключ "gold" не существует в таблице, он создается со значением 100. Если ключ "level" уже существует, его значение обновляется до 6.

Вы можете использовать либо точечную нотацию, либо нотацию в квадратных скобках для этих операций:

-- Оба этих способа работают одинаково
player.class = "Warrior"
player["weapon"] = "Sword"
challenge icon

Задание

Легко

Создайте систему прогрессии персонажа, которая демонстрирует как добавление новых атрибутов, так и изменение существующих. Начните с создания таблицы с именем hero со следующими начальными парами ключ-значение: ["name"] должно быть присвоено строковое значение "Warrior", ["level"] должно быть присвоено число 5, а ["health"] должно быть присвоено число 120.

После создания начальной таблицы персонажа выполните следующие изменения: Сначала добавьте новую пару ключ-значение ["class"] со значением "Paladin", используя точечную нотацию. Затем измените существующее значение level на 7, используя нотацию в квадратных скобках. Наконец, добавьте еще одну новую пару ключ-значение ["mana"] со значением 80, используя нотацию в квадратных скобках.

После завершения всех изменений выведите класс героя и обновленный уровень, чтобы проверить изменения.

Шпаргалка

Чтобы добавить новую пару «ключ-значение» или изменить существующую в таблице, используйте оператор присваивания с точечной нотацией или нотацией в квадратных скобках:

local player = {
    ["name"] = "Alex",
    ["level"] = 5
}

-- Добавление новой пары «ключ-значение»
player.gold = 100

-- Изменение существующего значения
player.level = 6

Lua не делает различий между добавлением и изменением — если ключ не существует, он создается; если он существует, его значение обновляется.

Для этих операций подходят как точечная нотация, так и нотация в квадратных скобках:

-- Оба способа работают одинаково
player.class = "Warrior"
player["weapon"] = "Sword"

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

-- Создание начальной таблицы героя
local hero = {
    -- TODO: Добавьте сюда начальные пары ключ-значение
}

-- TODO: Добавьте новые атрибуты и измените существующие, используя точечную и скобочную нотацию

-- Вывод класса героя и обновленного уровня
print(hero.class)
print(hero.level)
quiz iconПроверьте себя

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

Все уроки раздела Fundamentals