Итоги: обобщенные функции
Часть раздела Введение в Luau путешествия по Lua на Coddy — урок 62 из 73.
Задание
СреднеОбъедините обобщённые псевдонимы типов и обобщённые функции в одной программе.
Определите обобщённый псевдоним типа с именем Pair с двумя параметрами типа T и U, описывающий таблицу с:
firstтипаTsecondтипаU
Создайте обобщённую функцию с именем makePair, которая объявляет T и U, принимает first: T и second: U, и возвращает их упакованными в Pair<T, U>.
Создайте обобщённую функцию с именем describePair, которая объявляет T и U, принимает pair: Pair<T, U>, и возвращает строку ({first}, {second}), созданную с помощью интерполяции строк (тип возвращаемого значения string).
Затем:
- создайте
playerScoreтипаPair<string, number>, вызвавmakePair("Nova", 87) - создайте
levelDoneтипаPair<number, boolean>, вызвавmakePair(3, true) - выведите
playerScore.first - выведите
playerScore.second - выведите
describePair(playerScore) - выведите
describePair(levelDone) - выведите
describePair(makePair("Luau", 2026))в одну строку
Попробуйте сами
-- Напишите код здесь
-- 1) определите тип Pair<T, U> = {first: T, second: U}
-- 2) определите makePair<T, U>(first: T, second: U): Pair<T, U>
-- 3) определите describePair<T, U>(pair: Pair<T, U>): string
-- возвращающую `({pair.first}, {pair.second})`
-- 4) создайте playerScore ("Nova", 87) и levelDone (3, true),
-- затем выведите пять требуемых строк
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции, ничего не возвращающиеНеобязательные параметрыЗначения параметров по умолчаниюФункции с переменным числом аргументовОпределение типов функцийИтоги: типизированные функции2Базовые типы
Основные типы: num, str, boolТип 'any': лазейка в типизацииТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовИтоги: практика по базовым типам5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: Массивы и Map-словари
Типизированные массивыДобавление и чтение элементовЧто такое тип Map?Объявление и доступ к Map-словарямИтерация по таблицамТаблицы смешанной формыМногомерные типизированные массивыtable.unpack и VarargsИтоги: Массивы и Map-словари6Типизация структуры таблиц
Встроенные аннотации структурПсевдонимы типов для структурНеобязательные свойстваСтруктурированные и произвольные таблицыРасширение структурДобавление методов в структурыМетоды с Self и двоеточиемИтоги: Определение структуры таблиц9Обобщения (Generics): первое знакомство
Проблема, которую решают GenericsОбобщенная функция тождественностиИспользование обобщенной функцииОбобщенные массивыОбобщенные псевдонимы типовИтоги: обобщенные функции