Repaso - Registro de temperatura
Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 16 de 57.
Desafío
DifícilConstruye un pequeño registro de temperaturas. Completa el enumerado Scale (celsius, fahrenheit, con valores sin procesar C y F) y la estructura Reading, que almacena la temperatura en grados celsius. Reading tiene una fábrica estática parse(_:) que lee texto como 20C o 68F (y devuelve nil para cualquier otra cosa), una propiedad calculada fahrenheit y una label calculada que devuelve 20.0C / 68.0F. La clase TemperatureLog mantiene un array de lecturas y una propiedad highest con un observador didSet que registra cada nuevo récord como new high 25.0C.
El código proporcionado añade cada lectura analizada al registro (o imprime bad reading: x), imprime la etiqueta de cada lectura y, finalmente, imprime los registros recopilados por el observador, uno por línea.
Tu código va en Scale.swift, Reading.swift y TemperatureLog.swift. main.swift contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
// Código de entrada/salida suministrado: mantenlo tal como está
var input: [String] = []
while let line = readLine() { input.append(line) }
let log = TemperatureLog()
for line in input {
if let r = Reading.parse(line) {
log.add(r)
print(r.label)
} else {
print("bad reading: \(line)")
}
}
for record in log.records { print(record) }
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 libros3Propiedades en profundidad
Propiedades calculadasObservadores de propiedadesMiembros estáticosEnumeraciones con métodosRepaso - Registro de temperaturaPractica por tu cuenta: Playground de Swift