Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 1 из 54.

При работе с таблицами в стиле словаря в Lua вам часто требуется получить доступ к каждой сохранённой паре key-value. function pairs() позволяет это сделать, давая возможность пройтись по всем записям в таблице, независимо от типа key.Синтаксис использования pairs() в цикле for выглядит так:
for key, value in pairs(myTable) do
    -- используйте key и value здесь
end
Во время каждой итерации цикла pairs() предоставляет и key, и соответствующее ему значение. Это означает, что вы можете одновременно обращаться к обеим частям информации и работать с ними.Вот практический пример с inventory игрока:
local inventory = {
    sword = 1,
    potion = 5,
    gold = 150
}

for item, quantity in pairs(inventory) do
    print(item .. ": " .. quantity)
end
Этот код выведет имя каждого item и его количество. Функция pairs() работает с любым типом ключа, включая строки, числа и даже другие таблицы.Работа со строкамиВ Lua можно объединять строки с помощью оператора конкатенации, который состоит из двух точек (..). Например, "Hello" .. " " .. "World" даёт результат "Hello World".Если вам нужно отформатировать текст в несколько строк, можно использовать escape-символ новой строки, "\n". Когда Lua встречает "\n" внутри строки, он воспринимает это как команду перейти на следующую строку.Например, print("Line 1\nLine 2") выведет:
Line 1
Line 2
challenge icon

Задание

Легко

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

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

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

Параметры:

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

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

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

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

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Lua