Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком путешествия по 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() работает с любым типом ключей, включая строки, числа или даже другие таблицы.Работа со строкамиВ Lua вы можете объединять строки с помощью оператора конкатенации, который представляет собой две точки (..). Например, "Hello" .. " " .. "World" дает в результате "Hello World".Если вам нужно отформатировать текст на нескольких строках, вы можете использовать символ экранирования новой строки "\n". Когда Lua встречает "\n" внутри строки, она воспринимает его как команду перейти на следующую строку.Например, print("Line 1\nLine 2") выведет:
Line 1
Line 2
challenge icon

Задание

Легко

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

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

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

Параметры:

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

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

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

function printInventory(inventory)
    -- Чтобы отформатировать вывод, вы можете объединять строки с помощью оператора '..'.
    -- Чтобы добавить новую строку, используйте специальный символ '\n'.
    -- Вам может понадобиться способ отслеживать, добавляете ли вы первый элемент или последующий
    -- чтобы решить, добавлять ли новую строку перед элементом.
    
    -- Напишите код здесь
end
quiz iconПроверьте себя

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

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