Menu
Coddy logo textTech

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

Часть раздела Logic & Flow путешествия по Lua на Coddy — урок 6 из 54.

Lua предоставляет взаимодополняющую пару методов для работы с несколькими значениями: конструирование таблиц и table.unpack(). Они особенно полезны при работе с функциями, которым требуется гибкая обработка аргументов.

Вы можете собрать несколько значений в таблицу списочного типа, используя синтаксис конструктора таблиц с фигурными скобками. Это объединяет все значения в единую структуру таблицы.

local args = {10, 20, 30}
print(args[1])  -- Вывод: 10
print(#args)    -- Вывод: 3

Функция table.unpack() выполняет обратное действие — она принимает таблицу в стиле списка и возвращает все её элементы как отдельные значения. Это позволяет передавать содержимое таблицы в качестве отдельных аргументов функции.

local numbers = {5, 10, 15}
print(table.unpack(numbers))  -- Вывод: 5    10    15

Эти методы бесшовно работают вместе. Вы можете собирать значения в таблицу, манипулировать ею, а затем распаковывать её обратно в отдельные значения.

challenge icon

Задание

Легко

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

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

Логика:

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

Параметры:

  • a (number): Первое число
  • b (number): Второе число
  • c (number): Третье число

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

Шпаргалка

Синтаксис конструктора таблиц {a, b, c, ...} создает таблицу в стиле списка. Используйте # для получения количества элементов.

local args = {10, 20, 30}
print(args[1])  -- Вывод: 10
print(#args)    -- Вывод: 3

table.unpack() принимает таблицу в стиле списка и возвращает все её элементы как отдельные значения, позволяя передавать содержимое таблицы в качестве отдельных аргументов функции.

local numbers = {5, 10, 15}
print(table.unpack(numbers))  -- Вывод: 5    10    15

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

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

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

    -- Распакуйте таблицу и передайте значения в функцию sum

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

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

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