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 identidade feita corretamente, como uma função genérica:

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

O <T> após o nome da função declara um parâmetro de tipo: um espaço reservado que representa "algum tipo, decidido a cada chamada". 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 T mesmo para a entrada e a saída é todo o truque. Isso vincula os dois. Chame identity("hello") e o verificador decidirá T = string para essa chamada, então o resultado será uma string. Chame identity(42) e T = number, então o resultado será um number. Um corpo, todos os tipos, nada é perdido.

T é apenas um nome convencional (abreviação de "Type"): <Item> ou <Value> funcionam igualmente bem. E, como sempre no Luau, os sinais de menor e maior 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 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 item em sua própria linha:

  1. luckyNumber
  2. greeting
  3. isReady
  4. o resultado de chamar identity com "<code>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(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