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 passez — une fonction identité. Avec les types que vous connaissez jusqu'à présent, vous avez deux options, et toutes deux posent problème.

Option un : écrire une copie séparée 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 implique une autre copie, et un bug corrigé dans l'une doit être corrigé dans toutes les autres. C'est exactement le genre de duplication qu'on cherche à éviter en écrivant des fonctions.

Option deux : les regrouper en une seule fonction typée avec any :

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

Désormais, une seule fonction gère tout — mais au détriment de la sécurité de typage. Lorsque vous appelez echo("hello"), le checker ne knows plus que le result est un string. Il sait seulement any, l'autoplétion s'éteint et les erreurs de type s'infiltrent : la relation entre ce qui est entré et ce qui sort est perdue.

Ce que vous voulez vraiment, c'est une fonction qui fonctionne pour chaque type et qui se souvient du type utilisé par chaque appel. C'est précisément ce que les génériques vous apportent — 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