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 : tu les as stockées dans des variables et tu les as transmises : local f = function(x) return x * 2 end. Ces fonctions anonymes (expressions de fonction) acceptent les annotations de type exactement comme 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 entre les parenthèses, et le type de retour suit la parenthèse fermante : la seule différence avec une fonction nommée est que le mot-clé function n’a pas de nom et que toute l’expression est affectée à une variable.
Si tu as déjà utilisé JavaScript ou TypeScript, note que Luau ne possède pas de fonctions fléchées. Il n’existe pas de syntaxe =>. Chaque expression de fonction s’écrit avec function ... end, sous forme longue ou courte.
Une fois affectée, tu l’appelles via la variable comme n’importe quelle fonction : double(21) renvoie 42, et le vérificateur contrôle chaque appel par rapport aux annotations que tu as écrites.
Défi
FacileRéécrivez cette fonction nommée en 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
endDonc : créez local subtract = function(...) ... end avec les mêmes types de paramètres et de retour.
Créez ensuite deux autres fonctions anonymes typées :
createMessage: prendtext: stringet renvoie la chaîne"Message: [text]"(type de retourstring)isPositive: prendnum: numberet 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 MapsEntraînez-vous par vous-même : Compilateur Lua en ligne