함수: 항목 상세 정보 가져오기
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 67번째.
챌린지
중급프로젝트를 완성하세요! 이전 레슨의 모든 내용을 유지하세요: Item<T>, addItem, findItem, Weapon/Potion 별칭, 그리고 두 인벤토리(weapons: Iron Sword 25 / Fire Axe 40, potions: Health Potion 40 / Mega Potion 90).
describeWeapon(item: Weapon): string을 작성하여Weapon: [name] (damage [damage])을 반환하세요.describePotion(item: Potion): string을 작성하여Potion: [name] (heals [heal])을 반환하세요.tonumber(io.read())를 사용하여 쿼리 개수를 읽으세요.- 각 쿼리마다 카테고리 줄(
weapon또는potion)과 id 줄(tonumber로 변환)을 읽으세요.findItem으로 일치하는 인벤토리를 검색하고, item이 존재하면 설명을 출력하고 그렇지 않으면Item not found를 출력하세요.
예를 들어 입력 2, weapon, 2, potion, 1(한 줄에 하나의 값)은 다음을 출력합니다.
Weapon: Fire Axe (damage 40)
Potion: Health Potion (heals 40)직접 해보기
-- 이전 강의의 인벤토리 시스템
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})
-- 여기에 코드를 작성하세요
-- 1) describeWeapon(item: Weapon): string과 describePotion(item: Potion): string
-- 2) 쿼리 개수를 읽은 다음, 각 쿼리마다: 카테고리 줄 + id 줄
-- 3) findItem in the right inventory; print the description or "Item not found"
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러