Funktion: Elementdetails abrufen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 67 von 73.
Aufgabe
MittelSchließe das Projekt ab! Behalte alles aus der vorherigen Lektion bei: Item<T>, addItem, findItem, die Weapon/Potion-Aliase und beide Inventare (weapons: Iron Sword 25 / Fire Axe 40, potions: Health Potion 40 / Mega Potion 90).
- Schreibe
describeWeapon(item: Weapon): string, dasWeapon: [name] (damage [damage])zurückgibt. - Schreibe
describePotion(item: Potion): string, dasPotion: [name] (heals [heal])zurückgibt. - Lies die Anzahl der Abfragen mit
tonumber(io.read())ein. - Lies für jede Abfrage eine
category-Zeile (weaponoderpotion) und eine ID-Zeile (mittonumberumwandeln) ein. Durchsuche das passendeinventorymitfindItem: Gib die Beschreibung aus, wenn dasitemexistiert, andernfallsItem not found.
Zum Beispiel gibt die Eingabe 2, weapon, 2, potion, 1 (ein Wert pro Zeile) Folgendes aus:
Weapon: Fire Axe (damage 40)
Potion: Health Potion (heals 40)Probier es selbst
-- Das Inventarsystem aus den vorherigen Lektionen
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 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
type WeaponData = {damage: number}
type PotionData = {heal: number}
type Weapon = Item<WeaponData>
type Potion = Item<PotionData>
local weapons: {Weapon} = {}
addItem(weapons, "Iron Sword", {damage = 25})
addItem(weapons, "Fire Axe", {damage = 40})
local potions: {Potion} = {}
addItem(potions, "Health Potion", {heal = 40})
addItem(potions, "Mega Potion", {heal = 90})
-- Schreibe hier den Code
-- 1) describeWeapon(item: Weapon): string und describePotion(item: Potion): string
-- 2) lies die Abfrageanzahl, dann pro Abfrage: Kategoriezeile + ID-Zeile
-- 3) findItem in the right inventory; print the description or "Item not found"
Alle Lektionen in Einführung in Luau
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen7Projekt: Typisierter Task-Manager
Projekt: Die Task-StrukturFunktion zum Hinzufügen eines Tasks10Projekt: Generisches Inventar
Projekt: InventarelementFunktion: Elemente hinzufügen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und Maps