Menu
Coddy logo textTech

Usando uma Função Genérica

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

Você nunca diz a identity o que T é — o verificador descobre isso sozinho. Isso é inferência de tipo: em cada ponto de chamada, o Luau olha para o argumento e resolve T:

local word = identity("Luau")   -- T inferido como string
local count = identity(12)      -- T inferido como number
local flag = identity(false)    -- T inferido como boolean

Cada chamada é independente — T pode ser um string em uma linha e um number na próxima. O resultado inferido é tão seguro quanto uma anotação escrita manualmente: word é um string para o verificador, com autocompletar e verificação de erros completos.

Uma diferença importante do TypeScript: o TS permite forçar o tipo no ponto de chamada com identity<number>(5). O Luau não possui argumentos de tipo no ponto de chamada — essa linha não é uma sintaxe especial, então o Luau lê os parênteses angulares como comparações de menor que/maior que e o código falha. Quando quiser declarar o tipo explicitamente, anote a variável:

local count: number = identity(12)

Você pode ver a inferência funcionando com uma ferramenta familiar: typeof retorna o nome do tipo em tempo de execução de um valor, então print(typeof(identity(12))) exibe number — o valor passou pela função genérica completamente inalterado.

challenge icon

Desafio

Fácil

A função genérica identity da lição anterior já está no seu editor. Coloque a inferência dela para funcionar.

Crie três variáveis, deixando o verificador inferir T (nenhuma anotação necessária):

  • word — chame identity com "Luau"
  • count — chame identity com 12
  • flag — chame identity com false

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

  1. word
  2. o resultado de typeof(word)
  3. count
  4. o resultado de typeof(count)
  5. flag
  6. o resultado de typeof(flag)

Experimente você mesmo

-- A função de identidade genérica da lição anterior
local function identity<T>(value: T): T
    return value
end

-- Escreva o código aqui
-- 1) crie word, count e flag com chamadas a identity (deixe T ser inferido)
-- 2) imprima cada valor seguido do seu typeof
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