Menu
Coddy logo textTech

Arrays Genéricos

Parte da seção Introdução ao Luau do Journey de Lua da Coddy. Lição 60 de 73.

Os genéricos se tornam realmente úteis quando tabelas entram em cena. Você já escreve arrays tipados como {number} ou {string}. Dentro de uma função genérica, o tipo do elemento pode ser simplesmente T, e {T} significa "um array do que quer que T venha a ser".

Aqui está o exemplo clássico: buscar o primeiro elemento de qualquer array:

local function first<T>(items: {T}): T?
    return items[1]
end

Passe um {string} e o verificador infere T = string, então o resultado é uma string. Passe um {number} e ele será um número. Uma função substitui toda uma família de cópias específicas para cada tipo.

Observe atentamente o tipo de retorno: ele é T?, não T. Um array pode estar vazio e, nesse caso, items[1] é nil: o tipo opcional que você conheceu anteriormente afirma isso honestamente: "um T ou nil". O verificador vai incentivar quem chama a função a tratar o caso nil antes de usar o resultado, que é exatamente a detecção de erros que você espera de uma linguagem tipada.

challenge icon

Desafio

Fácil

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

  • declare um parâmetro de tipo T
  • aceite um parâmetro chamado items do tipo {T}
  • retorne o primeiro elemento, com tipo de retorno T?nil para um array vazio)

Crie estes arrays tipados:

  • fruits do tipo {string} com "apple", "banana", "cherry"
  • scores do tipo {number} com 10, 20, 30, 40
  • flags do tipo {boolean} com false, true
  • empty do tipo {string} sem elementos

Imprima o resultado de chamar first com cada array, nessa ordem, cada um em sua própria linha.

Experimente você mesmo

-- Escreva o código aqui
-- 1) defina first<T>(items: {T}): T? retornando items[1]
-- 2) crie fruits: {string}, scores: {number}, flags: {boolean},
--    e um array {string} vazio
-- 3) imprima first(...) de cada array, nessa ordem
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