Inizia subitoInizia gratis

Esporre il tuo genitore

Per impostazione predefinita, le classi R6 hanno accesso solo alle funzionalità del loro genitore diretto. Per consentire l'accesso attraverso più generazioni, le classi intermedie devono definire un active binding che esponga il loro genitore. Questo assume la forma

active = list(
  super_ = function() super
)

Questo esercizio fa parte del corso

Programmazione orientata agli oggetti con S3 e R6 in R

Visualizza corso

Istruzioni dell'esercizio

Una classe per un forno a microonde è già stata predefinita nel tuo workspace.

  • Estendi la classe del forno a microonde avanzato aggiungendo un elemento active alla lista.
  • Aggiungi un active binding per esporre la funzionalità del suo genitore.
    • Il binding deve chiamarsi super_.
    • Deve essere una funzione senza argomenti che restituisce semplicemente super.
  • Istanzia un oggetto forno a microonde avanzato e assegnalo a a_fancy_microwave.
  • Chiama il binding super_ del forno a microonde avanzato.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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
___
Modifica ed esegui il codice