Создание таблиц и unpack()
Часть раздела Логика и управление потоком путешествия по Lua на Coddy. Урок 6 из 54.
unpack(). Они особенно полезны при работе с функциями, которым нужна гибкая обработка аргументов.Можно поместить несколько значений в таблицу в виде списка, используя синтаксис конструктора таблиц с фигурными скобками. Так все значения собираются в единую структуру таблицы.local args = {10, 20, 30}
print(args[1]) -- Вывод: 10
print(#args) -- Вывод: 3unpack() делает обратное. Она принимает таблицу в виде списка и возвращает все её элементы как отдельные значения. Это позволяет передавать содержимое таблицы функции в качестве отдельных аргументов.Важно: Хотя в более новых версиях Lua (5.2+) эту функцию перенесли в table.unpack(), в этой среде используется Lua 5.1, поэтому необходимо использовать глобальную функцию unpack().local numbers = {5, 10, 15}
print(unpack(numbers)) -- Вывод: 5 10 15Задание
ЛегкоНапишите функцию 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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордовПотренируйтесь самостоятельно: Онлайн-компилятор Lua