CommencerCommencer gratuitement

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

Afficher le cours

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