Menu
CoddyTech

Fungsi: Cari Barang berdasarkan ID

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 65 dari 73.

challenge icon

Tantangan

Mudah

Lanjutkan proyekmu dari pelajaran sebelumnya (pertahankan Item<T>, addItem, dan inventory weapons dengan dua itemnya).

  • Tulis fungsi generik findItem<T>(inventory: {Item<T>}, id: number): Item<T>? yang melakukan perulangan pada inventory dan mengembalikan item yang id-nya cocok, atau nil jika tidak ada yang cocok.
  • Panggil findItem(weapons, 2). Jika fungsi mengembalikan item, cetak name item tersebut lalu data.damage-nya (dua baris); jika tidak, cetak Item not found.
  • Panggil findItem(weapons, 99). Jika fungsi mengembalikan item, cetak name item tersebut; jika tidak, cetak Item not found.

Coba sendiri

-- From the previous lesson
type Item<T> = {
    id: number,
    name: string,
    data: T,
}

-- NEW: create an item, store it, return it
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

-- Build the weapons inventory with the new function
local weapons: {Item<{damage: number}>} = {}
local sword = addItem(weapons, "Iron Sword", {damage = 25})
local axe = addItem(weapons, "Fire Axe", {damage = 40})

print(#weapons)
print(sword.id)
print(sword.name)
print(axe.id)
print(weapons[2].data.damage)

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online