復習 - 図書館カード
CoddyのSwiftジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 6/57。
チャレンジ
中級クラス LibraryCardを完成させてください。イニシャライザはメンバーのnameとlimit(デフォルトは3)を受け取り、借りている本がない状態で開始します。borrow(_:)は、カードが上限に達しておらず、そのタイトルをすでに所持していない場合、trueを返してタイトルを追加します。giveBack(_:)は、タイトルを削除できた場合にtrueを返します。status()は、タイトルを借りた順番で並べたAda: 2/3 (Dune, Emma)を返し、何も借りていない場合はAda: 0/3を返します。
用意されているコードは、名前、limit(またはデフォルト値を使うための空行)、続いて+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プレイグラウンド