Menu
Coddy logo textTech

Повторение — журнал температуры

Часть раздела Объектно-ориентированное программирование путешествия по Swift на Coddy. Урок 16 из 57.

challenge icon

Задание

Сложно

Создайте небольшой журнал температур. Завершите перечисление Scale (celsius, fahrenheit, с исходными значениями C и F) и структуру Reading, которая хранит температуру в градусах Цельсия. В Reading есть статическая фабрика parse(_:), которая считывает текст вроде 20C или 68F (возвращая nil для всего остального), вычисляемое свойство fahrenheit и вычисляемое свойство label, возвращающее 20.0C / 68.0F. Класс TemperatureLog хранит массив показаний и свойство highest с наблюдателем didSet, который записывает каждый новый рекорд как new high 25.0C.

Предоставленный код добавляет каждое разобранное показание в журнал (или выводит bad reading: x), выводит метку каждого показания и наконец выводит записи, собранные наблюдателем, по одной в строке.

Ваш код должен находиться в файлах Scale.swift, Reading.swift и TemperatureLog.swift. В main.swift находится предоставленный код ввода/вывода, и его нельзя редактировать.

Попробуйте сами

// Предоставленный код ввода/вывода: оставьте его как есть
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) }

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Песочница Swift