Menu
Coddy logo textTech

Funkcja: dodawanie elementów

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 64 z 73.

challenge icon

Wyzwanie

Łatwy

Rozbuduj projekt z poprzedniej lekcji (zachowaj typ Item<T>).

  • Napisz funkcję generyczną addItem<T>(inventory: {Item<T>}, name: string, data: T): Item<T>, która tworzy element z id = #inventory + 1, wstawia go do inventory za pomocą table.insert i zwraca go.
  • Utwórz pustą typowaną tablicę weapons typu {Item<{damage: number}>}.
  • Użyj addItem, aby dodać "Iron Sword" z {damage = 25}, zapisując wynik w sword.
  • Użyj addItem, aby dodać "Fire Axe" z {damage = 40}, zapisując wynik w axe.

Następnie wypisz, każdą wartość w osobnym wierszu:

  1. #weapons
  2. sword.id
  3. sword.name
  4. axe.id
  5. weapons[2].data.damage

Spróbuj swoich sił

-- The generic item shape every inventory will share
type Item<T> = {
    id: number,
    name: string,
    data: T,
}

-- A weapon item: T is filled in with {damage: number}
local sword: Item<{damage: number}> = {
    id = 1,
    name = "Iron Sword",
    data = {damage = 25},
}

-- A potion item: same shape, different data type
local potion: Item<{heal: number}> = {
    id = 2,
    name = "Health Potion",
    data = {heal = 40},
}

print(sword.id)
print(sword.name)
print(sword.data.damage)
print(potion.id)
print(potion.name)
print(potion.data.heal)

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online