Menu
Coddy logo textTech

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) .. "!"
end

Les 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.

challenge icon

Défi

Facile

Réé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
end

Ainsi : 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 — prend text: string, renvoie la chaîne "Message: [text]" (type de retour string)
  • isPositive — prend num: number, renvoie true si le nombre est supérieur à 0, sinon false (type de retour boolean)

Appelez et affichez, chacun sur sa propre ligne :

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. 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
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