Exposer votre parent
Par défaut, les classes R6 n’ont accès qu’aux fonctionnalités de leur parent direct. Pour autoriser l’accès sur plusieurs générations, les classes intermédiaires doivent définir un lien actif qui expose leur parent. Cela prend la forme
active = list(
super_ = function() super
)
Cet exercice fait partie du cours
Programmation orientée objet avec S3 et R6 en R
Instructions
Une classe de four à micro-ondes a été prédéfinie pour vous dans votre espace de travail.
- Étendez la classe de micro-ondes évolué en ajoutant un élément
activeà la liste. - Ajoutez un lien actif pour exposer les fonctionnalités de son parent.
- Le lien doit s’appeler
super_. - Ce doit être une fonction qui ne prend aucun argument et retourne simplement
super.
- Le lien doit s’appeler
- Instanciez un objet micro-ondes évolué et affectez-le à
a_fancy_microwave. - Appelez le lien
super_du micro-ondes évolué.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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
___