Les tableaux génériques
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 64 sur 80.
Les génériques deviennent vraiment utiles dès qu’on utilise des tables. Tu écris déjà des tableaux typés sous la forme {number} ou {string}. Dans une fonction générique, le type des éléments peut simplement être T, et {T} signifie « un tableau de ce que T se révélera être ».
Voici l’exemple classique : récupérer le premier élément de n’importe quel tableau :
local function first<T>(items: {T}): T?
return items[1]
endPasse un {string} et le vérificateur déduit T = string, donc le résultat est une chaîne de caractères. Passe un {number} et le résultat est un nombre. Une seule fonction remplace toute une famille de copies spécifiques à chaque type.
Examine attentivement le type de retour : c’est T?, et non T. Un tableau peut être vide, auquel cas items[1] vaut nil : le type optionnel que tu as rencontré plus tôt l’indique clairement : « un T, ou nil ». Le vérificateur incitera les appelants à gérer le cas nil avant d’utiliser le résultat, ce qui permet précisément de détecter les erreurs comme on l’attend d’un langage typé.
Défi
FacileRécupère le premier élément de n’importe quel tableau.
- Écris
local function first<T>(items: {T}): T?qui renvoieitems[1]. - Déclare
local fruits: {string} = {"apple", "banana"}etlocal empty: {number} = {}. - Affiche
first(fruits), puisfirst(empty).
Appuie sur Exécuter le code : la sortie affiche apple et nil.
Essayez vous-même
-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string} et un {number} vide
-- 3) afficher le premier élément de chacun
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 maps6Typage des structures de tables
Annotations de structures en ligneAlias de types pour les structuresPropriétés optionnellesStructures vs tables libresExtension de structuresAjout de méthodes aux structuresMéthodes avec Self et deux-pointsRécapitulatif : Définir des structures de tables9Les génériques : Un premier aperçu
Le problème résolu par les génériquesUne fonction d'identité génériqueUtiliser une fonction génériqueLes tableaux génériquesLes alias de types génériquesRécapitulatif : Les fonctions génériquesEntraînez-vous par vous-même : Compilateur Luau en ligne