Menu
Coddy logo textTech

Le problème résolu par les génériques

Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 57 sur 73.

Imaginez que vous ayez besoin d’une fonction qui renvoie simplement la valeur que vous lui transmettez : une fonction d’identité. Avec les types que vous connaissez jusqu’à présent, vous avez deux options, et toutes deux posent problème.

Première option : écrire une copie distincte pour chaque type. Les corps sont identiques ; seules les annotations diffèrent :

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

Chaque nouveau type signifie une copie supplémentaire, et un bug corrigé dans l’une doit être corrigé dans toutes les autres. C’est exactement la duplication que vous cherchez à éviter en écrivant des fonctions.

Deuxième option : les regrouper en une seule fonction typée avec any :

local function echo(value: any): any
    return value
end

À présent, une seule fonction gère tout, mais vous avez sacrifié la sécurité des types. Lorsque vous appelez echo("hello"), le vérificateur ne sait plus que le résultat est une chaîne. Il connaît seulement any : l’autocomplétion devient inutilisable et les erreurs de type passent inaperçues ; le lien entre ce qui est passé en entrée et ce qui est renvoyé en sortie est perdu.

Ce que vous voulez vraiment, c’est une fonction qui fonctionne avec chaque type et qui mémorise le type utilisé par chaque appel. C’est précisément ce que les génériques vous offrent, et c’est le sujet de ce chapitre.

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Introduction à Luau

Entraînez-vous par vous-même : Compilateur Lua en ligne