Menu
CoddyTech

Hàm: tìm vật phẩm theo ID

Thuộc phần Giới thiệu về Luau trong hành trình Lua của Coddy. Bài học 70 trên 80.

challenge icon

Thử thách

Dễ

Thêm một hàm để tìm một vật phẩm theo id.

  1. Xóa các dòng bên dưới -- Try it.
  2. Viết local function findItem<T>(inventory: {Item<T>}, id: number): Item<T>? để trả về vật phẩm có id trùng khớp, hoặc nil.
  3. Bên dưới -- Try it, in ra findItem(weapons, 99), sau đó lưu findItem(weapons, 2) vào local found và in ra found.name bên trong if found then.

Nhấn Run Code: đầu ra hiển thị nil và Fire Axe.

Tự làm thử

-- Cấu trúc của phần tử chung cho mọi kho đồ
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}}
-- Tạo một phần tử với id chưa dùng tiếp theo, lưu rồi trả về phần 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 weapons: {Item<{damage: number}>} = {}
addItem(weapons, "Iron Sword", {damage = 25})
addItem(weapons, "Fire Axe", {damage = 40})
-- Thử nhé
print(#weapons)
print(weapons[2].name)

Tất cả bài học trong Giới thiệu về Luau

Tự luyện tập: Trình biên dịch Luau online