Menu
CoddyTech

回顾:图书证

本课属于 Coddy Swift 学习旅程的“面向对象编程”单元。第 6 课,共 57 课。

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 在线编辑器