Menu
Coddy logo textTech

Repaso: tarjeta de biblioteca

Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 6 de 57.

challenge icon

Desafío

Intermedio

Completa la clase LibraryCard. Su inicializador recibe el miembro name y un limit (3 de forma predeterminada) y comienza sin libros prestados. borrow(_:) devuelve true y añade el título, a menos que la tarjeta haya alcanzado su límite o ya contenga ese título. giveBack(_:) devuelve true cuando ha eliminado el título. status() devuelve Ada: 2/3 (Dune, Emma) con los títulos en el orden en que se tomaron prestados, o Ada: 0/3 cuando no hay ningún libro prestado.

El código proporcionado lee el nombre, el límite (o una línea vacía para usar el valor predeterminado) y después los comandos +title o -title. Imprime ok o no para cada comando y, finalmente, status().

Tu código debe ir en LibraryCard.swift. main.swift contiene el código de entrada/salida proporcionado y no se puede editar.

Pruébalo tú mismo

// Código de entrada/salida suministrado: déjalo tal cual
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())

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Playground de Swift