復習 - 図書館カード
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オンラインコンパイラ