Recapitulação: Funções Genéricas
Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 62 de 73.
Desafio
MédioCombine aliases genéricos e funções genéricas em um único programa.
Defina um alias de tipo genérico chamado Pair com dois parâmetros de tipo T e U, descrevendo uma tabela com:
firstdo tipoTseconddo tipoU
Crie uma função genérica chamada makePair que declara T e U, aceita first: T e second: U, e os retorna empacotados em um Pair<T, U>.
Crie uma função genérica chamada describePair que declara T e U, aceita um pair: Pair<T, U>, e retorna a string ({first}, {second}) construída com interpolação de string (tipo de retorno string).
Depois:
- crie
playerScoredo tipoPair<string, number>chamandomakePair("Nova", 87) - crie
levelDonedo tipoPair<number, boolean>chamandomakePair(3, true) - imprima
playerScore.first - imprima
playerScore.second - imprima
describePair(playerScore) - imprima
describePair(levelDone) - imprima
describePair(makePair("Luau", 2026))em uma única linha
Experimente você mesmo
-- Escreva o código aqui
-- 1) defina o tipo Pair<T, U> = {first: T, second: U}
-- 2) defina makePair<T, U>(first: T, second: U): Pair<T, U>
-- 3) defina describePair<T, U>(pair: Pair<T, U>): string
-- retornando `({pair.first}, {pair.second})`
-- 4) construa playerScore ("Nova", 87) e levelDone (3, true),
-- então imprima as cinco linhas necessárias
Todas as lições de Introdução ao Luau
1Começando com o Luau
O que é Luau?Por que usar Luau?Seu primeiro código em LuauVerificação de tipos e modos de erroRecapitulando: Introdução ao Luau4Trabalhando com Funções
Tipando Parâmetros e Valores de RetornoTipando Funções AnônimasFunções que Não Retornam NadaParâmetros OpcionaisValores Padrão para ParâmetrosFunções VariádicasDefinindo Tipos de FunçõesRecapitulação: Funções Tipadas2Tipos Fundamentais
Tipos Básicos: num, str, boolO Tipo 'any': Escape HatchO Tipo 'unknown'Tipos Nil e OpcionaisInferência de Tipos na PráticaAnotações Explícitas de TiposReciclagem: Prática de Tipos Fundamentais5Aliases, Uniões, Interseções
Aliases de Tipos para PrimitivosTipos de UniãoTrabalhando com Tipos de UniãoTipos LiteraisTipos de InterseçãoCombinando Aliases de TiposRecapitulando: Combinações Avançadas de Tipos3Tabelas Tipadas: Arrays e Maps
Arrays TipadosAdicionando e Lendo ElementosO que é um Tipo Map?Declarando e Acessando MapsIterando Sobre TabelasTabelas de Formato MistoArrays Tipados Multidimensionaistable.unpack e VarargsRecapitulando: Arrays e Maps6Tipando Formatos de Tabelas
Anotações de Formato InlineAliases de Tipo para FormatosPropriedades OpcionaisFormatos vs. Tabelas FlexíveisEstendendo FormatosAdicionando Métodos a FormatosSelf e Métodos com Dois PontosRecapitulação: Definindo Formatos de Tabelas9Generics: Uma Primeira Visão
O Problema que Generics ResolvemUma Função de Identidade GenéricaUsando uma Função GenéricaArrays GenéricosAliases de Tipos GenéricosRecapitulação: Funções Genéricas