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.

Vous ne dites jamais à identity ce qu'est T — le vérificateur le détermine de lui-même. C'est l'inférence de type : à chaque 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 un string dans une ligne et un number dans la suivante. Le résultat inféré est tout aussi sûr qu'une annotation écrite à la main : word est un string pour le vérificateur, avec l'autoplétion complète et la vérification des erreurs.

Une différence importante par rapport à TypeScript : TS vous permet de forcer le type lors de l'appel avec identity<number>(5). Luau n'a pas d'arguments de type au niveau de l'appel — cette ligne n'est pas une syntaxe spéciale, donc Luau lit les crochets d'angle comme des comparaisons inférieur à/supérieur à et le code échoue. Lorsque vous souhaitez spécifier le type explicitement, annotez plutôt la variable :

local count: number = identity(12)

Vous pouvez observer l'inférence à l'œuvre avec un outil familier : typeof renvoie le nom du type à l'exécution (runtime) d'une valeur, donc print(typeof(identity(12))) affiche number — la valeur est passée par la fonction générique sans aucune modification.

challenge icon

Défi

Facile

La fonction generic identity de la lesson previous est déjà dans votre éditeur. Mettez son inférence à profit.

Créez three variables, en laissant le vérificateur inférer T (aucune annotation nécessaire) :

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

Affichez ce qui suit, each 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