Menu
Coddy logo textTech

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.

challenge icon

Desafío

Difícil

Construye 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

Practica por tu cuenta: Playground de Swift