Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - سجل درجات الحرارة

جزء من قسم البرمجة كائنية التوجه في رحلة 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) }

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: Playground لـ Swift