回顾:图书馆借书证
本课属于 Coddy Ruby 学习旅程的“面向对象编程”单元。第 6 课,共 57 课。
挑战
中等完成 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 在线编译器