Menu
Coddy logo textTech

Recapitulação - Registro de Temperatura

Parte da seção Programação Orientada a Objetos do Journey de Swift da Coddy. Lição 16 de 57.

challenge icon

Desafio

Difícil

Crie um pequeno registro de temperaturas. Complete o enum Scale (celsius, fahrenheit, com valores brutos C e F) e a struct Reading, que armazena a temperatura em celsius. Reading tem um método fábrica estático parse(_:) que lê textos como 20C ou 68F (retornando nil para qualquer outra coisa), uma propriedade computada fahrenheit e uma propriedade computada label que retorna 20.0C / 68.0F. A classe TemperatureLog mantém um array de leituras e uma propriedade highest com um observador didSet que registra cada novo recorde como new high 25.0C.

O código fornecido adiciona cada leitura analisada ao registro (ou imprime bad reading: x), imprime o rótulo de cada leitura e, por fim, imprime os recordes coletados pelo observador, um por linha.

Seu código deve ficar em Scale.swift, Reading.swift e TemperatureLog.swift. main.swift contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

// Código de entrada/saída fornecido: mantenha-o 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 as lições de Programação Orientada a Objetos

Pratique por conta própria: Playground de Swift