Fonction : décrire des objets
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 72 sur 80.
Défi
MoyenAjoute une fonction de description pour chaque type d’objet.
- Supprime les lignes sous
-- Try it. - Écris
local function describeWeapon(item: Weapon): stringqui renvoie`Weapon: {item.name} (damage {item.data.damage})`. - Écris
describePotion(item: Potion): stringqui renvoie`Potion: {item.name} (heals {item.data.heal})`. - Sous
-- Try it, affichedescribeWeapon(weapons[2])etdescribePotion(potions[1]).
Appuie sur Run Code : la sortie affiche Weapon: Fire Axe (damage 40) et Potion: Health Potion (heals 40).
Essayez vous-même
-- La structure d’un objet commune à tous les inventaires
type Item<T> = {
id: number,
name: string,
data: T,
}
local sword: Item<{damage: number}> = {id = 1, name = "Iron Sword", data = {damage = 25}}
local potion: Item<{heal: number}> = {id = 2, name = "Health Potion", data = {heal = 40}}
-- Créer un objet avec le prochain id disponible, le stocker, puis le renvoyer
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
type Weapon = Item<{damage: number}>
type Potion = Item<{heal: number}>
local weapons: {Weapon} = {}
addItem(weapons, "Iron Sword", {damage = 25})
addItem(weapons, "Fire Axe", {damage = 40})
-- L’objet ayant cet id, ou nil
local function findItem<T>(inventory: {Item<T>}, id: number): Item<T>?
for _, item in ipairs(inventory) do
if item.id == id then
return item
end
end
return nil
end
local potions: {Potion} = {}
addItem(potions, "Health Potion", {heal = 40})
-- Essayer
print(potions[1].data.heal)
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âche10Projet : inventaire générique
Projet : objet d’inventaireFonction : ajouter des objets2Types 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