סיכום – תור המשימות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-R של Coddy. שיעור 41 מתוך 57.
אתגר
בינוניבנה תור משימות משתי מחלקות Reference. שתי ההגדרות עטופות ב־suppressMessages().
TaskבקובץTask.R: השדותtitle,priority(מספרי) ו־done(לוגי);initializeמגדירה אתdoneל־FALSEאם לא ניתן לו ערך;label()מחזירה[x] fix (3)עבור משימה שהושלמה או[ ] fix (3).TaskQueueבקובץTaskQueue.R: השדהtasks(ערך מסוגlist);add(title, priority)מוסיפהTaskחדשה ומחזירהinvisible(.self);next_task()מחזירה את הכותרת של המשימה הפתוחה בעלת העדיפות הגבוהה ביותר (ובמקרה של שוויון, זו שנוספה ראשונה), אוnothing;complete(title)מסמנת את המשימה הפתוחה הראשונה עם הכותרת הזאת כהושלמה ומחזירהTRUE, אוFALSE;report()מחזירה תווית אחת לכל משימה, לפי סדר הוספתן, ואזopen: 2.
הקוד שסופק קורא את add fix 3, את next ואת done fix, ואז מוסיף שתי משימות בקריאה משורשרת אחת ומדפיס את הדוח.
הקוד שלך צריך להיכתב בקבצים Task.R ו־TaskQueue.R. הקובץ main.R מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
source("Task.R")
source("TaskQueue.R")
# קוד קלט/פלט שסופק: יש להשאיר אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
q <- TaskQueue$new()
for (line in input) {
p <- strsplit(line, " ")[[1]]
if (p[1] == "add") {
q$add(p[2], as.numeric(p[3]))
} else if (p[1] == "next") {
cat("next: ", q$next_task(), "\n", sep = "")
} else if (p[1] == "done") {
cat(if (q$complete(p[2])) "completed " else "no open task ", p[2], "\n", sep = "")
}
}
q$add("late", 1)$add("later", 1)
writeLines(q$report())
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות S3
עבודה עם קבציםרשימות עם מחלקהפונקציות בנאימתודות print ו-formatמאמתים ופונקציות עזרחזרה – טמפרטורותתרגלו בעצמכם: קומפיילר R אונליין