Menu
CoddyTech

Arrays Genéricos

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

Os genéricos ficam 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 simplesmente ser T, e {T} significa “um array de qualquer tipo que T acabar sendo”.

Aqui está o exemplo clássico: obter 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 o resultado é 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: é T?, não T. Um array pode estar vazio e, nesse caso, items[1] é nil: o tipo opcional que você conheceu anteriormente deixa isso claro: “um T ou nil”. O verificador vai incentivar quem chama a função a tratar o caso nil antes de usar o resultado, exatamente o tipo de detecção de erros que você espera de uma linguagem tipada.

challenge icon

Desafio

Fácil

Obtenha o primeiro elemento de qualquer array.

  1. Escreva local function first<T>(items: {T}): T? que retorna items[1].
  2. Declare local fruits: {string} = {"apple", "banana"} e local empty: {number} = {}.
  3. Imprima first(fruits), depois first(empty).

Pressione Executar código: a saída mostra apple e nil.

Experimente você mesmo

-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string} e um {number} vazio
-- 3) imprima o primeiro de cada um

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

Pratique por conta própria: Compilador de Luau online