Menu
Coddy logo textTech

Uma Função de Identidade Genérica

Parte da seção Introdução ao Luau do Journey de Lua da Coddy — lição 58 de 73.

Aqui está a função identity feita da maneira certa — como uma generic function:

local function identity<T>(value: T): T
    return value
end

O <T> depois do nome da função declara um type parameter — um marcador de posição que representa "algum type, decidido em cada call". Dentro da assinatura você usa T exatamente como um type real: o parâmetro é um T, e a função retorna um T.

Usar o mesmo T para entrada e saída é todo o truque — isso os conecta. Chame identity("hello") e o verificador decide T = string para essa call, então o result é um string. Chame identity(42) e T = number, então o result é um number. Um corpo, every type, nada perdido.

T é apenas um nome convencional (abreviação de "Type") — <Item> ou <Value> funcionam tão bem quanto. E como sempre em Luau, os colchetes angulares existem apenas para o verificador: em tempo de execução, esta é a função Lua simples function identity(value) return value end.

challenge icon

Desafio

Fácil

Crie uma função genérica chamada identity que:

  • declare um parâmetro de tipo T
  • aceite um parâmetro chamado value do tipo T
  • retorne esse valor, com o tipo de retorno T

Em seguida, crie estas variáveis tipadas usando sua função:

  • luckyNumber do tipo number — chame identity com 7
  • greeting do tipo string — chame identity com "Hello, Luau!"
  • isReady do tipo boolean — chame identity com true

Imprima o seguinte, cada um em sua própria linha:

  1. luckyNumber
  2. greeting
  3. isReady
  4. o resultado de chamar identity com "generics" diretamente dentro de print
  5. o resultado de chamar identity com 99 diretamente dentro de print

Experimente você mesmo

-- Escreva o código aqui
-- 1) defina identity<T>(value: T): T
-- 2) crie luckyNumber, greeting e isReady com chamadas a identity
-- 3) imprima-os, depois imprima identity("generics") e identity(99)
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Introdução ao Luau