Typage des fonctions anonymes
Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 23 sur 73.
En Lua, les fonctions sont des valeurs — vous les avez stockées dans des variables et transmises : local f = function(x) return x * 2 end. Ces fonctions anonymes (expressions de fonction) prennent des annotations de type exactement comme le font les fonctions nommées :
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
endLes paramètres reçoivent name: type à l'intérieur des parenthèses, et le type de retour suit la parenthèse fermante — la seule différence par rapport à une fonction nommée est que le mot-clé function n'a pas de nom et que l'expression entière est assignée à une variable.
Si vous connaissez JavaScript ou TypeScript, notez que Luau n'a pas de fonctions fléchées — il n'y a pas de syntaxe =>. Chaque expression de fonction est écrite avec function ... end, qu'elle soit courte ou longue.
Une fois assignée, vous l'appelez à travers la variable comme n'importe quelle fonction : double(21) renvoie 42, et le vérificateur valide chaque appel par rapport aux annotations que vous avez écrites.
Défi
FacileRéécrivez cette fonction nommée sous la forme d'une fonction anonyme stockée dans une variable locale, en conservant toutes les annotations de type :
function subtract(a: number, b: number): number
return a - b
endAinsi : créez local subtract = function(...) ... end avec les mêmes types de paramètres et de retour.
Ensuite, créez deux autres fonctions anonymes typées :
createMessage— prendtext: string, renvoie la chaîne"Message: [text]"(type de retourstring)isPositive— prendnum: number, renvoietruesi le nombre est supérieur à 0, sinonfalse(type de retourboolean)
Appelez et affichez, chacun sur sa propre ligne :
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
Essayez vous-même
-- Écrivez le code ici
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- puis affichez les quatre résultats
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
1Premiers pas avec Luau
Qu'est-ce que Luau ?Pourquoi utiliser Luau ?Votre premier code LuauVérification de type et modes d'erreurRécapitulatif : Introduction à Luau4Travailler avec les fonctions
Typage des paramètres et valeurs de retourTypage des fonctions anonymesFonctions ne retournant rienParamètres optionnelsValeurs par défaut des paramètresFonctions variadiquesDéfinition des types de fonctionsRécapitulatif : Fonctions typées2Types fondamentaux
Types de base : num, str, boolLe type 'any' : la porte de sortieLe type 'unknown'Types Nil et optionnelsL'inférence de type en actionAnnotations explicites de typeRécapitulatif : Pratique des types fondamentaux5Alias, unions et intersections
Alias de types pour les types primitifsTypes unionsTravailler avec les types unionsTypes littérauxTypes intersectionsCombinaison d'alias de typesRécapitulatif : Combinaisons de types avancées3Tables typées : Tableaux et Maps
Tableaux typésAjout et lecture d'élémentsQu'est-ce qu'un type Map ?Déclaration et accès aux MapsItération sur les tablesTables à formes mixtesTableaux typés multidimensionnelstable.unpack et VarargsRécapitulatif : Tableaux et Maps