Menu
Coddy logo textTech

복습 - 도서관 카드

Coddy Swift 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 6번째.

challenge icon

챌린지

중급

LibraryCard 클래스를 완성하세요. 이니셜라이저는 멤버 name과 limit(기본값 3)을 인수로 받고, 빌린 책이 없는 상태로 시작합니다. borrow(_:)는 카드가 한도에 도달했거나 해당 제목을 이미 보유하고 있지 않은 경우에만 true를 반환하고 제목을 추가합니다. giveBack(_:)는 제목을 제거했을 때 true를 반환합니다. status()는 대출 순서대로 제목을 나열하여 Ada: 2/3 (Dune, Emma)을 반환하거나, 아무것도 대출하지 않았을 때 Ada: 0/3을 반환합니다.

제공된 코드는 이름과 한도(또는 기본값을 사용하기 위한 빈 줄)를 읽은 다음 +title 또는 -title 명령을 읽습니다. 각 명령에 대해 ok 또는 no를 출력하고 마지막으로 status()를 출력합니다.

코드는 LibraryCard.swift에 작성하세요. main.swift에는 제공된 입력/출력 코드가 들어 있으며 수정할 수 없습니다.

직접 해보기

// 제공된 입력/출력 코드: 그대로 유지하세요
var input: [String] = []
while let line = readLine() { input.append(line) }
let card = input[1].isEmpty ? LibraryCard(name: input[0]) : LibraryCard(name: input[0], limit: Int(input[1])!)
for cmd in input.dropFirst(2) {
    let title = String(cmd.dropFirst())
    let done = cmd.hasPrefix("+") ? card.borrow(title) : card.giveBack(title)
    print(done ? "ok" : "no")
}
print(card.status())

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: Swift 플레이그라운드