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

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

challenge icon

Défi

Facile

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

Donc : 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 : prend text: string et renvoie la chaîne "Message: [text]" (type de retour string)
  • isPositive : prend num: number et 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

Entraînez-vous par vous-même : Compilateur Lua en ligne