Итерация с помощью ipairs()
Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 2 из 54.
Хотя pairs() работает с любой структурой таблицы, Lua предоставляет специальную функцию под названием ipairs(), разработанную специально для таблиц в виде списков. Эта функция перебирает таблицы в последовательном порядке, начиная с индекса 1 и продолжая, пока не встретит значение nil.
Синтаксис ipairs() похож на синтаксис pairs():
for index, value in ipairs(myList) do
-- используйте index и value здесь
endВот пример со списком предметов задания:
local questItems = {"Map", "Compass", "Torch", "Rope"}
for i, item in ipairs(questItems) do
print(i .. ". " .. item)
endOutput:
1. Map
2. Compass
3. Torch
4. RopeКлючевое отличие от pairs() заключается в том, что ipairs() немедленно останавливается, когда обнаруживает значение nil, даже если после него есть другие элементы.
Задание
ЛегкоНапишите функцию listTasks, которая принимает таблицу tasks и возвращает отформатированную строку со списком всех задач и их порядковыми номерами.
Используйте ipairs(), чтобы перебирать задачи в последовательном порядке и создавать строку, в которой каждая строка содержит номер задачи, за которым следует имя задачи, в формате number. task. Каждая задача должна находиться на отдельной строке.
Параметры:
tasks(таблица): Таблица в виде списка, содержащая имена задач в виде строк
Возвращает: Строку, в которой каждая задача пронумерована и находится на отдельной строке. Формат:
1. task1
2. task2
3. task3Попробуйте сами
function listTasks(tasks)
-- Напишите код здесь
end
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордовПотренируйтесь самостоятельно: Онлайн-компилятор Lua