Menu
CoddyTech

回顾:图书馆借书证

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

challenge icon

挑战

中等

完成 LibraryCard 类。initialize(name, limit = 3) 会保存姓名和借阅上限,初始时没有借阅任何书名。borrow(title) 会添加书名并返回 true,但如果卡片已达到借阅上限或已持有该书名,则返回 false。如果 give_back(title) 移除了该书名,则会返回 true。to_s 会按借阅顺序返回 Ada: 2/3 (Dune, Emma),如果没有借阅任何书,则返回 Ada: 0/3。

提供的代码会读取姓名和借阅上限(默认值用 - 表示),然后读取 +title 或 -title 命令。每条命令都会输出 ok 或 no,最后输出卡片信息。

你的代码应写在 library_card.rb 中。main.rb 包含提供的输入/输出代码,不能编辑。

亲手试试

require_relative 'library_card'

# 提供的输入/输出代码:保持原样
input = []
while (line = gets)
  input << line.chomp
end
card = input[1] == "-" ? LibraryCard.new(input[0]) : LibraryCard.new(input[0], input[1].to_i)
input.drop(2).each do |cmd|
  title = cmd[1..]
  done = cmd.start_with?("+") ? card.borrow(title) : card.give_back(title)
  puts done ? "ok" : "no"
end
puts card

面向对象编程中的所有课

自己练习: Ruby 在线编译器