Создание таблиц и 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Эти методы бесшовно работают вместе. Вы можете собирать значения в таблицу, манипулировать ею, а затем распаковывать её обратно в отдельные значения.
Задание
ЛегкоНапишите функцию 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) -- Вывод: 3table.unpack() принимает таблицу в стиле списка и возвращает все её элементы как отдельные значения, позволяя передавать содержимое таблицы в качестве отдельных аргументов функции.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- Вывод: 5 10 15Попробуйте сами
function forwardArguments(a, b, c)
-- Создайте отдельную функцию, которая вычисляет сумму
-- Создайте таблицу, содержащую все три аргумента
-- Распакуйте таблицу и передайте значения в функцию sum
end
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов