Menu
Coddy logo textTech

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

Часть раздела Logic & Flow путешествия по 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)
end

Вывод:

1. Map
2. Compass
3. Torch
4. Rope

Ключевое отличие от pairs() заключается в том, что ipairs() немедленно останавливается, когда находит значение nil, даже если после него есть другие элементы.

challenge icon

Задание

Легко

Напишите функцию listTasks, которая принимает таблицу tasks и возвращает отформатированную строку со списком всех задач и их порядковыми номерами.

Используйте ipairs() для последовательного перебора задач и создания строки, где каждая строка показывает номер задачи, за которым следует название задачи в формате number. task. Каждая задача должна быть на отдельной строке.

Параметры:

  • tasks (table): Таблица в стиле списка, содержащая названия задач в виде строк

Возвращает: Строку, в которой каждая задача пронумерована и находится на отдельной строке. Формат: 

1. task1
2. task2
3. task3

Шпаргалка

ipairs() перебирает таблицы в стиле списка в последовательном порядке, начиная с индекса 1 и останавливаясь на первом значении nil:

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)
end
-- Output:
-- 1. Map
-- 2. Compass
-- 3. Torch
-- 4. Rope

Ключевое отличие: В отличие от pairs(), ipairs() немедленно останавливается, когда встречает значение nil, даже если после него есть другие элементы.

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

function listTasks(tasks)
    -- Напишите код здесь
end
quiz iconПроверьте себя

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

Все уроки раздела Logic & Flow