مراجعة - درجات الحرارة
جزء من قسم البرمجة كائنية التوجه في رحلة R على Coddy. الدرس 6 من 57.
التحدي
متوسطأنشئ فئة S3 temperature في الملف Temperature.R. درجة الحرارة هي رقم ذو سمة unit (C أو F).
- تتحقق
new_temperature(value, unit)من الأنواع باستخدامstopifnot()وتُرجعstructure(value, unit = unit, class = "temperature"). - تتوقف
validate_temperature(x)مع الرسالةunit must be C or F، أو مع الرسالةbelow absolute zeroعندما تكون القيمة أقل من -273.15 C أو -459.67 F. - تحوّل
temperature(value, unit = "C")القيمة باستخدامas.double()، وتحول الوحدة إلى أحرف كبيرة، ثم تُرجع درجة حرارة تم التحقق منها. - تُرجع
format.temperature()القيمة21.5 Cبمنزلة عشرية واحدة، وتطبعprint.temperature()القيمةTemperature: 21.5 Cوتُرجعinvisible(x). - تُرجع
convert_to(t, unit)درجة حرارة بالوحدة المحددة (القيمة نفسها عندما تكون الوحدة مطابقة بالفعل).
استخدم call. = FALSE في كل استدعاء لـ stop(). يقرأ الكود المقدم الأسطر 21.5 c F (القيمة، والوحدة، والوحدة المستهدفة)، ويطبع درجة الحرارة والدرجة المحوّلة، أو error: والرسالة.
ضع الكود في Temperature.R. يحتوي main.R على كود الإدخال/الإخراج المقدم ولا يمكن تعديله.
جرّب بنفسك
source("Temperature.R")
# كود الإدخال/الإخراج المُقدَّم: اتركه كما هو
input <- suppressWarnings(readLines(file("stdin")))
for (line in input) {
p <- strsplit(line, " ")[[1]]
result <- tryCatch({
t <- temperature(p[1], p[2])
print(t)
print(convert_to(t, p[3]))
NULL
}, error = function(e) cat("error: ", conditionMessage(e), "\n", sep = ""))
}
جميع دروس البرمجة كائنية التوجه
1أساسيات S3
التعامل مع الملفاتالقوائم باستخدام فئةدوال المُنشئأساليب الطباعة والتنسيقأدوات التحقق والمساعدةمراجعة - درجات الحرارة2S3 الدوال العامة والطرق
الدوال العامة وUseMethodالطرق الافتراضيةطرق الدوال العامة الأساسيةأساسيات NextMethodمراجعة - مساحات الأشكالتدرّب بنفسك: مترجم R عبر الإنترنت