Menu
CoddyTech

Создание таблиц и unpack()

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

Lua предоставляет взаимодополняющую пару приёмов для работы с несколькими значениями: создание таблиц и unpack(). Они особенно полезны при работе с функциями, которым нужна гибкая обработка аргументов.Можно поместить несколько значений в таблицу в виде списка, используя синтаксис конструктора таблиц с фигурными скобками. Так все значения собираются в единую структуру таблицы.
local args = {10, 20, 30}
print(args[1])  -- Вывод: 10
print(#args)    -- Вывод: 3
Функция unpack() делает обратное. Она принимает таблицу в виде списка и возвращает все её элементы как отдельные значения. Это позволяет передавать содержимое таблицы функции в качестве отдельных аргументов.Важно: Хотя в более новых версиях Lua (5.2+) эту функцию перенесли в table.unpack(), в этой среде используется Lua 5.1, поэтому необходимо использовать глобальную функцию unpack().
local numbers = {5, 10, 15}
print(unpack(numbers))  -- Вывод: 5    10    15
Эти приемы работают вместе без сбоев. Ты можешь собирать значения в таблицу, изменять ее, а затем распаковывать обратно в отдельные значения.
challenge icon

Задание

Легко

Напишите функцию forwardArguments, которая принимает три числа a, b и c и возвращает их сумму, используя создание таблицы и unpack().

Создайте таблицу, содержащую три аргумента, используя синтаксис {a, b, c}, затем распакуйте их и передайте другой функции, которая вычисляет их сумму.

Примечание: Используйте глобальную функцию unpack(), а не table.unpack(), чтобы обеспечить совместимость с этой средой.

Логика:

  • Используйте {a, b, c}, чтобы создать таблицу, содержащую все три аргумента
  • Создайте отдельную функцию с именем sum, которая принимает три параметра и возвращает их сумму
  • Используйте unpack(), чтобы передать значения таблицы функции sum
  • Верните результат функции sum

Параметры:

  • a (число): первое число
  • b (число): второе число
  • c (число): третье число

Возвращает: Сумму всех трёх чисел (число)

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

function forwardArguments(a, b, c)
    -- Создайте отдельную функцию, которая вычисляет сумму

    -- Создайте таблицу, содержащую все три аргумента

    -- Распакуйте таблицу и передайте значения функции вычисления суммы
    -- Подсказка: используйте глобальную функцию 'unpack', чтобы развернуть аргументы из таблицы

end
quiz iconПроверьте себя

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

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

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