Итерация с помощью 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() работает с любым типом ключей, включая строки, числа или даже другие таблицы.
Задание
ЛегкоНапишите функцию printInventory, которая принимает таблицу inventory и возвращает отформатированную строку со списком всех предметов и их количеством.
Используйте pairs() для итерации по таблице инвентаря и создания строки, где каждая строка содержит название предмета, за которым следует его количество в формате item: quantity. Каждый предмет должен быть на отдельной строке.
Чтобы расположить каждый предмет на отдельной строке, используйте символ новой строки "\n" между записями. Например, "apple: 5\nbanana: 3" будет отображаться как две отдельные строки. Будьте осторожны и не добавляйте ведущий "\n" перед первым предметом — добавляйте его только между предметами.
Параметры:
inventory(table): Таблица в стиле словаря, где ключи — это названия предметов (строки), а значения — их количество (числа)
Возвращает: Строку, в которой каждый предмет и его количество находятся на отдельной строке, разделенные "\n". Пример вывода для {apple=5, banana=3}:apple: 5banana: 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
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов