Menu
Coddy logo textTech

Utiliser une fonction générique

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

Tu n’indiques jamais à identity ce qu’est T : le vérificateur le déduit de lui-même. C’est l’inférence de type : à chaque site d’appel, Luau examine l’argument et résout T :

local word = identity("Luau")   -- T inféré comme string
local count = identity(12)      -- T inféré comme number
local flag = identity(false)    -- T inféré comme boolean

Chaque appel est indépendant : T peut être une chaîne sur une ligne et un nombre sur la suivante. Le résultat inféré est tout aussi sûr qu’une annotation écrite manuellement : pour le vérificateur, word est une string, avec la complétion automatique et la vérification des erreurs.

Une différence importante avec TypeScript : TS te permet de forcer le type sur le site d’appel avec identity<number>(5). Luau n’a pas d’arguments de type sur le site d’appel. Cette ligne n’est pas une syntaxe spéciale, donc Luau interprète les chevrons comme des comparaisons inférieur à/supérieur à et le code échoue. Lorsque tu veux indiquer explicitement le type, annote plutôt la variable :

local count: number = identity(12)

Tu peux observer l’inférence à l’œuvre avec un outil familier : typeof renvoie le nom du type à l’exécution d’une valeur, donc print(typeof(identity(12))) affiche number : la valeur a traversé la fonction générique sans aucune modification.

challenge icon

Défi

Facile

La fonction générique identity de la leçon précédente se trouve déjà dans votre éditeur. Mettez son inférence à profit.

Créez trois variables en laissant le vérificateur déduire T (aucune annotation nécessaire) :

  • word : appelez identity avec "Luau"
  • count : appelez identity avec 12
  • flag : appelez identity avec false

Affichez les éléments suivants, chacun sur sa propre ligne :

  1. word
  2. le résultat de typeof(word)
  3. count
  4. le résultat de typeof(count)
  5. flag
  6. le résultat de typeof(flag)

Essayez vous-même

-- La fonction d'identité générique de la leçon précédente
local function identity<T>(value: T): T
    return value
end

-- Écrivez le code ici
-- 1) créez word, count et flag avec des appels à identity (laissez T être inféré)
-- 2) affichez chaque valeur suivie de son typeof
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