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> após o nome da função declara um type parameter — um reservatório de posição que significa "algum tipo, decidido a cada call". Dentro da assinatura você usa T exatamente como um tipo 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 vincula. Faça o call identity("hello") e o verificador decide T = string para essa chamada, de modo que o resultado é um string. Faça o call identity(42) e T = number, então o resultado é um number. One corpo, every tipo, nada perdido.

T é apenas um nome convencional (abreviação de "Type") — <Item> ou <Value> funcionam igualmente bem. E como sempre no 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 da chamada de identity com "<code>generics" diretamente dentro de print
  5. o resultado da chamada de 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(o texto exato das instruções) 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

Pratique por conta própria: Compilador de Lua online