Repaso - elemento del inventario
Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 11 de 57.
Desafío
IntermedioCompleta la estructura StockItem con las propiedades name y quantity. Añade los métodos mutantes receive(_:) (suma) y ship(_:) (resta solo cuando hay suficiente cantidad en existencias y devuelve si lo hizo), y un método no mutante label() que devuelva tea: 12 o tea: out of stock para una cantidad de 0.
Después completa process(start:commands:): crea el artículo, conserva una copia llamada opening antes del primer comando, aplica los comandos y devuelve una línea por cada envío rechazado (cannot ship 5), seguida de now y la etiqueta del artículo, y después de was y la etiqueta de opening.
El código proporcionado lee el artículo como name,quantity y los comandos +n o -n, e imprime cada línea devuelta.
Tu código debe ir en StockItem.swift y Functions.swift. main.swift contiene el código proporcionado de entrada y salida y no se puede editar.
Pruébalo tú mismo
// Código de entrada/salida suministrado: déjalo como está
var input: [String] = []
while let line = readLine() { input.append(line) }
let p = input[0].split(separator: ",").map(String.init)
let item = StockItem(name: p[0], quantity: Int(p[1])!)
for line in process(start: item, commands: Array(input.dropFirst())) { print(line) }
Todas las lecciones de Programación orientada a objetos
1Clases y objetos
Trabajar con archivosDefinir clasesMétodos y selfInicializadoresLas clases son referenciasRepaso: tarjeta de biblioteca4Encapsulación
Control de accesoSolo lectura desde fueraProtección del estadoInicializadores que pueden fallarRepaso - Cuenta bancaria7Polimorfismo y genéricos
PolimorfismoConversión de tiposFunciones genéricasTipos genéricosRepaso - Calculadora de formas2Structs y tipos por valor
StructsSemántica de valoresMétodos mutablesStruct o claseRepaso - elemento del inventario5Herencia
SubclasesSobrescritura de métodosInicializadores y superfinal y jerarquíasRepaso: jerarquía de empleados8Protocolos estándar
CustomStringConvertibleEquatableComparableHashableRepaso - Ordenamiento personalizado11Proyecto: Gestión de bibliotecas
Libros y miembrosPréstamo de librosPractica por tu cuenta: Playground de Swift