Menu
Coddy logo textTech

復習 - 図書館カード

CoddyのSwiftジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 6/57。

challenge icon

チャレンジ

中級

クラス 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プレイグラウンド