Menu
Coddy logo textTech

Создание таблиц и 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
Эти методы отлично работают вместе. Вы можете собрать values в table, манипулировать table, а затем unpack их обратно в отдельные values.
challenge icon

Задание

Легко

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

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

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

Логика:

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

Параметры:

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

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

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

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

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

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

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

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

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