Menu
Coddy logo textTech

Итерация с помощью pairs()

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

При работе с таблицами в стиле словарей в Lua вам часто требуется доступ к каждой паре «ключ-значение», хранящейся внутри. Функция pairs() делает это возможным, позволяя вам перебирать все записи в таблице, независимо от того, какого типа ключи.

Синтаксис использования pairs() в цикле for выглядит следующим образом:

for key, value in pairs(myTable) do
    -- используйте key и value здесь
end

Во время каждой итерации цикла pairs() возвращает как ключ, так и соответствующее ему значение. Это означает, что вы можете получать доступ и работать с обеими частями информации одновременно.

Вот практический пример с инвентарем игрока:

local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end

Этот код выведет название каждого предмета и его количество. Функция pairs() работает с любым типом ключей, включая строки, числа или даже другие таблицы.

challenge icon

Задание

Легко

Напишите функцию printInventory, которая принимает таблицу inventory и возвращает отформатированную строку со списком всех предметов и их количеством.

Используйте pairs() для итерации по таблице инвентаря и создания строки, где каждая строка содержит название предмета, за которым следует его количество в формате item: quantity. Каждый предмет должен быть на отдельной строке.

Чтобы расположить каждый предмет на отдельной строке, используйте символ новой строки "\n" между записями. Например, "apple: 5\nbanana: 3" будет отображаться как две отдельные строки. Будьте осторожны и не добавляйте ведущий "\n" перед первым предметом — добавляйте его только между предметами.

Параметры:

  • inventory (table): Таблица в стиле словаря, где ключи — это названия предметов (строки), а значения — их количество (числа)

Возвращает: Строку, в которой каждый предмет и его количество находятся на отдельной строке, разделенные "\n". Пример вывода для {apple=5, banana=3}:
apple: 5
banana: 3

Шпаргалка

Функция pairs() позволяет перебирать все пары «ключ-значение» в таблице типа «словарь»:

for key, value in pairs(myTable) do
    -- используйте key и value здесь
end

Во время каждой итерации pairs() предоставляет как ключ, так и соответствующее ему значение, позволяя вам обращаться к обеим частям информации одновременно.

Пример с таблицей инвентаря:

local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end

Функция pairs() работает с любым типом ключей, включая строки, числа или даже другие таблицы.

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

function printInventory(inventory)
    -- Напишите код здесь
end
quiz iconПроверьте себя

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

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