Aprendiendo a cocinar
El tercer argumento de R6Class() se llama public y contiene la funcionalidad visible para el usuario del objeto. Este argumento debe ser una lista, con nombres para cada uno de sus elementos.
El elemento public de una clase R6 contiene la funcionalidad disponible para el usuario. Normalmente solo contendrá funciones.
El patrón actualizado para crear un generador de clases R6 es el siguiente:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Haz algo aquí
}
)
)
Este ejercicio forma parte del curso
Programación orientada a objetos con S3 y R6 en R
Instrucciones del ejercicio
Se ha definido parcialmente una fábrica de microondas para ti.
- Actualiza el elemento
publicde la definición para incluir un métodocook.- El método
cookes una función. - Debe tener un argumento llamado
time_secondspara indicar el tiempo de cocción. - En el cuerpo del método
cook, debes pasartime_secondsaSys.sleep()(docs), que no hace nada durante el tiempo indicado. - Por último, el método
cookdebe hacerprint()(docs) de la cadena"Your food is cooked!"
- El método
- Crea un objeto microondas llamado
a_microwave_ovenusando el métodonew()demicrowave_oven_factory. - Llama al método
cook()dea_microwave_ovendurante 1 segundo.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Add a cook method to the factory definition
microwave_oven_factory <- R6Class(
"MicrowaveOven",
private = list(
power_rating_watts = 800
),
public = list(
___ = ___(___) {
___
___
}
)
)
# Create microwave oven object
a_microwave_oven <- ___
# Call cook method for 1 second
___