Exponer tu clase padre
De forma predeterminada, las clases R6 solo tienen acceso a la funcionalidad de su clase padre directa. Para permitir el acceso a través de varias generaciones, las clases intermedias deben definir una vinculación activa que exponga a su padre. Esto tiene la forma
active = list(
super_ = function() super
)
Este ejercicio forma parte del curso
Programación orientada a objetos con S3 y R6 en R
Instrucciones del ejercicio
En tu espacio de trabajo ya hay una clase de microondas predefinida.
- Amplía la clase de microondas "fancy" añadiendo un elemento
activea la lista. - Añade una vinculación activa para exponer la funcionalidad de su clase padre.
- La vinculación debe llamarse
super_. - Debe ser una función que no reciba argumentos y simplemente devuelva
super.
- La vinculación debe llamarse
- Instancia un objeto de microondas "fancy" y asígnalo a
a_fancy_microwave. - Llama a la vinculación
super_del microondas "fancy".
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Expose the parent functionality
fancy_microwave_oven_factory <- R6Class(
"FancyMicrowaveOven",
inherit = microwave_oven_factory,
public = list(
cook_baked_potato = function() {
self$cook(3)
},
cook = function(time_seconds) {
super$cook(time_seconds)
message("Enjoy your dinner!")
}
),
# Add an active element with a super_ binding
___ = ___(
___ = ___
)
)
# Instantiate a fancy microwave
a_fancy_microwave <- ___
# Call the super_ binding
___