חזרה – טמפרטורות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-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
עבודה עם קבציםרשימות עם מחלקהפונקציות בנאימתודות print ו-formatמאמתים ופונקציות עזרחזרה – טמפרטורותתרגלו בעצמכם: קומפיילר R אונליין