Итерация с помощью pairs()
Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 1 из 54.
pairs() позволяет это сделать, давая возможность пройтись по всем записям в таблице, независимо от типа key.Синтаксис использования pairs() в цикле for выглядит так:for key, value in pairs(myTable) do
-- используйте key и value здесь
endpairs() предоставляет и key, и соответствующее ему значение. Это означает, что вы можете одновременно обращаться к обеим частям информации и работать с ними.Вот практический пример с inventory игрока:local inventory = {
sword = 1,
potion = 5,
gold = 150
}
for item, quantity in pairs(inventory) do
print(item .. ": " .. quantity)
endpairs() работает с любым типом ключа, включая строки, числа и даже другие таблицы.Работа со строкамиВ Lua можно объединять строки с помощью оператора конкатенации, который состоит из двух точек (..). Например, "Hello" .. " " .. "World" даёт результат "Hello World".Если вам нужно отформатировать текст в несколько строк, можно использовать escape-символ новой строки, "\n". Когда Lua встречает "\n" внутри строки, он воспринимает это как команду перейти на следующую строку.Например, print("Line 1\nLine 2") выведет:Line 1
Line 2Задание
ЛегкоНапиши функцию 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: 5banana: 3
Попробуйте сами
function printInventory(inventory)
-- Чтобы отформатировать вывод, вы можете объединять строки с помощью оператора '..'.
-- Чтобы добавить новую строку, используйте специальный символ '\n'.
-- Вам может понадобиться способ отслеживать, добавляете ли вы первый элемент или последующий
-- чтобы решить, нужно ли добавлять перевод строки перед элементом.
-- Напишите код здесь
endВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордовПотренируйтесь самостоятельно: Онлайн-компилятор Lua