Les tableaux génériques
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 60 sur 73.
Les génériques deviennent vraiment utiles dès que des tables sont impliquées. Vous écrivez déjà des tableaux typés sous la forme {number} ou {string}. À l'intérieur d'une fonction générique, le type des éléments peut simplement être T, et {T} signifie « un tableau de tout ce que T s'avère ê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]
endPassez un {string} et le vérificateur déduit T = string, le résultat est donc une chaîne de caractères. Passez un {number} et c'est un nombre. Une seule fonction remplace toute une famille de copies spécifiques à chaque type.
Observez attentivement le type de retour : c'est T?, et non T. Un tableau peut être vide, et dans ce cas items[1] vaut nil : le type optionnel que vous avez découvert précédemment l'indique honnêtement : « un T, ou nil ». Le vérificateur incitera les appelants à gérer le cas nil avant d'utiliser le résultat, ce qui correspond exactement au type de détection de bugs que vous attendez d'un langage typé.
Défi
FacileCrée une fonction générique nommée first qui :
- déclare un paramètre de type
T - accepte un paramètre nommé
itemsde type{T} - renvoie le premier élément, avec le type de retour
T?(il vautnilpour un tableau vide)
Crée ces tableaux typés :
fruitsde type{string}avec"apple","banana","cherry"scoresde type{number}avec10,20,30,40flagsde type{boolean}avecfalse,trueemptyde type{string}sans aucun élément
Affiche le résultat de l'appel à first avec chaque tableau, dans cet ordre, chacun sur sa propre ligne.
Essayez vous-même
-- Écrivez le code ici
-- 1) définir first<T>(items: {T}): T? retournant items[1]
-- 2) créer fruits: {string}, scores: {number}, flags: {boolean},
-- et un tableau {string} vide
-- 3) afficher first(...) de chaque tableau, dans cet ordre
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 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 Lua en ligne