CommencezCommencez gratuitement

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

Voir le cours

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.
  • 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
___
Modifier et exécuter le code