Menu
CoddyTech

Jawab Pertanyaan tentang Item

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

challenge icon

Tantangan

Sedang

Jawab pemain yang bertanya tentang satu item.

  1. Hapus baris-baris di bawah -- Try it.
  2. Di bawahnya, baca local category = io.read() dan local id: number = tonumber(io.read()) or 0.
  3. Untuk "weapon", cetak describeWeapon(item) untuk findItem(weapons, id); jika tidak, gunakan potions dan describePotion.
  4. Cetak Item not found ketika findItem mengembalikan nil.

Tekan Jalankan: dengan input weapon dan 2, kamu akan melihat Weapon: Fire Axe (damage 40).

Coba sendiri

-- Struktur item yang sama di setiap inventory
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}}
-- Buat item dengan id tersedia berikutnya, simpan, lalu kembalikan
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})
-- Item dengan id ini, atau 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})
-- Satu deskripsi untuk setiap jenis item
local function describeWeapon(item: Weapon): string
    return `Weapon: {item.name} (damage {item.data.damage})`
end

local function describePotion(item: Potion): string
    return `Potion: {item.name} (heals {item.data.heal})`
end
-- Cobalah
print(describeWeapon(weapons[2]))
print(describePotion(potions[1]))

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online