Итоги — Векторная математика
Часть раздела Logic & Flow путешествия по Lua на Coddy — урок 54 из 54.
Задание
ЛегкоНапишите функцию createVector, которая принимает координаты x и y и возвращает строку, демонстрирующую операции с векторами.
Создайте конструктор вектора, который строит таблицу с полями x и y, а затем прикрепляет метатаблицу, реализующую __add для сложения векторов и __tostring для пользовательского строкового представления. Функция должна создать два вектора, используя предоставленные координаты, сложить их и вернуть строковое представление результата.
Логика:
- Создайте функцию-конструктор, которая строит таблицу вектора с полями x и y
- Определите метатаблицу с
__add, которая складывает соответствующие компоненты x и y - Определите
__tostringдля возврата форматаVector(x, y) - Прикрепите метатаблицу к вектору с помощью
setmetatable() - Создайте первый вектор с координатами (x, y)
- Создайте второй вектор с координатами (x, y)
- Сложите два вектора вместе, используя оператор
+ - Верните строковое представление результирующего вектора с помощью
tostring()
Параметры:
x(number): Координата x для обоих векторовy(number): Координата y для обоих векторов
Возвращает: Строковое представление суммы двух векторов (string). Формат: Vector(6, 8) для входных данных (3, 4)
Попробуйте сами
function createVector(x, y)
-- Напишите код здесь
end
Все уроки раздела Logic & Flow
1Продвинутая итерация таблиц
Итерация с помощью pairs()Итерация с помощью ipairs()pairs() против ipairs()Повторение — Лист персонажа2Дополнительные функции библиотеки table
table.concat()Создание таблиц и unpack()table.sort()Пользовательская сортировка с помощью функцийИтоги — Таблица рекордов3Продвинутые концепции функций
Возврат нескольких значенийВариативные функции (...)Функции как объекты первого классаАнонимные функцииЧто такое замыкание?Итоги — простой обработчик событий9Корутины для начинающих
Что такое корутина?coroutine create и resumeПауза с помощью coroutine.yield()resume и yieldПроверка статуса корутиныИтоги — Генератор чиселИтоги — Векторная математика