Fonctions variadiques
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 29 sur 80.
Tu as utilisé ... (varargs) de Lua pour écrire des fonctions qui acceptent un nombre quelconque d’arguments. Luau te permet de typer les varargs, afin que chaque argument transmis soit vérifié :
function sum(...: number): number
local total = 0
for _, n in ipairs({...}) do
total = total + n
end
return total
end
print(sum(1, 2)) -- 3
print(sum(1, 2, 3, 4, 5)) -- 15...: number déclare que chaque argument supplémentaire doit être un nombre : sum(1, "two") provoque une erreur de type. Les outils d’exécution sont ceux que tu connais :
{...}rassemble les varargs dans un tableau (ici un{number})select("#", ...)compte le nombre d’arguments reçus...peut être transmis directement à une autre fonction, par exemplemath.max(...)
Comme en Lua, ... doit être le dernier paramètre : les paramètres ordinaires (typés) viennent en premier, et la partie variadique rassemble le reste :
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cDéfi
FacileÉcris deux fonctions qui prennent un nombre quelconque d’arguments.
- Écris
local function sumAll(...: number): numberqui additionne{...}avecipairs. - Écris
local function joinWords(separator: string, ...: string): stringqui renvoietable.concat({...}, separator). - Affiche
sumAll(5, 10, 15)etjoinWords("-", "apple", "banana", "cherry").
Appuie sur Exécuter le code : la sortie affiche 30 et apple-banana-cherry.
Essayez vous-même
-- 1) sumAll(...: number): number
-- 2) joinWords(separator: string, ...: string): string
-- 3) afficher les deux résultats
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
Typer les paramètres et les valeurs de retourTyper les fonctions anonymesFonctions sans valeur de retourParamètres optionnelsValeurs par défaut des paramètresValeurs par défaut pour les booléensFonctions variadiquesDéfinir des types de fonctionsRécapitulatif : fonctions typées7Projet : gestionnaire de tâches typé
Projet : la structure d’une tâcheFonction pour ajouter une tâche2Types fondamentaux
Nombre, chaîne de caractères et booléenLe type « any » : une échappatoireLe type « unknown »Types nil et optionnelsL’inférence de types en actionAnnotations de type explicitesRécapitulatif : exercices sur les 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ésAjouter et lire des élémentsQu’est-ce qu’un type Map ?Déclarer et accéder aux mapsParcourir les tablesTables de formes mixtesLire une grilleConstruire une grilletable.unpackRécapitulatif : tableaux et mapsEntraînez-vous par vous-même : Compilateur Luau en ligne