Menu
CoddyTech

Ôn tập: Nhật ký nhiệt độ

Thuộc phần Lập trình hướng đối tượng trong hành trình Swift của Coddy. Bài học 16 trên 57.

challenge icon

Thử thách

Khó

Hãy xây dựng một nhật ký nhiệt độ nhỏ. Hoàn thiện enum Scale (celsius, fahrenheit, với giá trị thô C và F) và struct Reading, dùng để lưu nhiệt độ theo độ Celsius. Reading có hàm tạo tĩnh parse(_:) để đọc văn bản như 20C hoặc 68F (trả về nil với mọi nội dung khác), thuộc tính được tính toán fahrenheit và label, thuộc tính này trả về 20.0C / 68.0F. Lớp TemperatureLog lưu một mảng số đo và thuộc tính highest có trình quan sát didSet, ghi lại mỗi mức cao mới dưới dạng new high 25.0C.

Code được cung cấp thêm mọi số đo đã phân tích vào nhật ký (hoặc in ra bad reading: x), in nhãn của từng số đo, rồi cuối cùng in ra các kỷ lục mà trình quan sát đã ghi lại, mỗi kỷ lục trên một dòng.

Code của bạn nằm trong Scale.swift, Reading.swift và TemperatureLog.swift. main.swift chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.

Tự làm thử

// Đoạn code đầu vào/đầu ra đã được cung cấp: giữ nguyên
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) }

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Playground Swift