Menu
CoddyTech

Une fonction d'identité générique

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

Voici la fonction identité correctement définie, sous la forme d’une fonction générique :

local function identity<T>(value: T): T
    return value
end

Le <T> après le nom de la fonction déclare un paramètre de type : un espace réservé qui signifie « un certain type, déterminé à chaque appel ». Dans la signature, tu utilises T exactement comme un type réel : le paramètre est de type T, et la fonction renvoie un T.

Utiliser le même T pour l’entrée et la sortie, voilà toute l’astuce. Cela les lie. Appelle identity("hello") et le vérificateur détermine que T = string pour cet appel, donc le résultat est une string. Appelle identity(42) et T = number, donc le résultat est un number. Un seul corps de fonction, tous les types, rien n’est perdu.

T est simplement un nom conventionnel (abréviation de « Type ») : <Item> ou <Value> conviennent tout aussi bien. Et comme toujours en Luau, les chevrons n’existent que pour le vérificateur : à l’exécution, il s’agit de la simple fonction Lua function identity(value) return value end.

challenge icon

Défi

Facile

Écris une seule fonction qui renvoie n’importe quelle valeur en conservant son type.

  1. Écris local function identity<T>(value: T): T qui renvoie value.
  2. Déclare local luckyNumber: number = identity(7) et local greeting: string = identity("Hello, Luau!").
  3. Affiche luckyNumber, puis greeting.

Appuie sur Run Code : la sortie affiche 7 et Hello, Luau!.

Essayez vous-même

-- 1) identity<T>(value: T): T
-- 2) luckyNumber et greeting issus des appels à identity
-- 3) afficher les deux

Toutes les leçons de Introduction à Luau

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