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