Fonction : Trouver un élément par ID
Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 65 sur 73.
Défi
FacileÉtendez votre projet de la leçon précédente (conservez Item<T>, addItem, et l'inventaire weapons avec ses deux éléments).
- Écrivez une fonction générique
findItem<T>(inventory: {Item<T>}, id: number): Item<T>?qui parcourt l'inventaire et renvoie l'élément dont l'idcorrespond, ounilsi aucun ne correspond. - Appelez
findItem(weapons, 2). S'il renvoie un élément, affichez lenamede l'élément puis sondata.damage(deux lignes) ; sinon affichezItem not found. - Appelez
findItem(weapons, 99). S'il renvoie un élément, affichez lenamede l'élément ; sinon affichezItem not found.
Essayez vous-même
-- Des leçons précédentes
type Item<T> = {
id: number,
name: string,
data: T,
}
local function addItem<T>(inventory: {Item<T>}, name: string, data: T): Item<T>
local item: Item<T> = {
id = #inventory + 1,
name = name,
data = data,
}
table.insert(inventory, item)
return item
end
local weapons: {Item<{damage: number}>} = {}
local sword = addItem(weapons, "Iron Sword", {damage = 25})
local axe = addItem(weapons, "Fire Axe", {damage = 40})
-- Écrivez le code ici
-- 1) findItem<T>(inventory: {Item<T>}, id: number): Item<T>?
-- 2) look up ids 2 and 99, printing details or "Item not found"
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ées7Projet : Gestionnaire de tâches typé
Projet : La structure d'une tâcheFonction pour ajouter une tâche10Projet : Inventaire générique
Projet : Élément d'inventaireFonction : Ajouter des éléments2Types 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 Maps