Repaso: cola de tareas
Parte de la sección Programación orientada a objetos del Journey de R de Coddy. Lección 41 de 57.
Desafío
IntermedioConstruye una cola de tareas a partir de dos clases de referencia. Ambas definiciones están envueltas en suppressMessages().
TaskenTask.R: campostitle,priority(numérico) ydone(lógico);initializehace quedoneseaFALSEcuando no se proporciona;label()devuelve[x] fix (3)para una tarea finalizada o[ ] fix (3).TaskQueueenTaskQueue.R: el campotasks(unalist);add(title, priority)añade una nueva instancia deTasky devuelveinvisible(.self);next_task()devuelve el título de la tarea abierta con la prioridad más alta (la añadida primero en caso de empate), onothing;complete(title)marca como finalizada la primera tarea abierta con ese título y devuelveTRUE, oFALSE;report()devuelve una etiqueta por tarea en el orden en que se añadieron, despuésopen: 2.
El código proporcionado lee add fix 3, next y done fix, después añade dos tareas en una llamada encadenada e imprime el informe.
Tu código va en Task.R y TaskQueue.R. main.R contiene el código de entrada/salida proporcionado y no se puede editar.
Pruébalo tú mismo
source("Task.R")
source("TaskQueue.R")
# Código de entrada/salida suministrado: mantenlo tal como está
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())
Todas las lecciones de Programación orientada a objetos
1Fundamentos de S3
Trabajar con archivosListas con una claseFunciones constructorasMétodos de impresión y formatoValidadores y auxiliaresRepaso: temperaturas4Encapsulación en R
Cierres como objetosEntornos como objetosFunciones de accesoProtección del estadoRepaso: parquímetro2S3 Genéricos y métodos
Genéricos y UseMethodMétodos predeterminadosMétodos para genéricos baseFundamentos de NextMethodRepaso: áreas de figuras5Clases S4
Definición de clases S4Slots y accesoComprobaciones de validezMétodos showRepaso - Catálogo de productos8Clases de referencia
Definición de clases de referenciaMétodos y actualizaciones de camposSemántica de copiaHerencia y callSuperRepaso: cola de tareas11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de librosPractica por tu cuenta: Compilador de R online