Menu
CoddyTech

回顾:温度记录

本课属于 Coddy Swift 学习旅程的“面向对象编程”单元。第 16 课,共 57 课。

challenge icon

挑战

困难

构建一个小型温度记录器。完成枚举 Scale(包含 celsius、fahrenheit,原始值为 C 和 F)和结构体 Reading,它用于存储摄氏温度。Reading 有一个静态工厂方法 parse(_:),用于读取类似 20C 或 68F 的文本(其他内容都返回 nil);还有一个计算属性 fahrenheit,以及一个返回 20.0C / 68.0F 的计算属性 label。类 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 在线编辑器