Aan de slagGa gratis aan de slag

Je ouder blootleggen

Standaard hebben R6-klassen alleen toegang tot de functionaliteit van hun directe ouder. Om toegang over meerdere generaties mogelijk te maken, moeten tussenliggende klassen een actieve binding definiëren die hun ouder blootlegt. Dat ziet er zo uit:

active = list(
  super_ = function() super
)

Deze oefening maakt deel uit van de cursus

Objectgeoriënteerd programmeren met S3 en R6 in R

Cursus bekijken

Oefeninstructies

Er is al een magnetronklasse voor je klaargezet in je werkruimte.

  • Breid de fancy magnetronklasse uit door een active-listelement toe te voegen.
  • Voeg een actieve binding toe die de functionaliteit van de ouder blootlegt.
    • De binding moet super_ heten.
    • Het moet een functie zijn zonder argumenten die simpelweg super teruggeeft.
  • Instantier een fancy magnetronobject en ken het toe aan a_fancy_microwave.
  • Roep de super_-binding van de fancy magnetron aan.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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
___
Code bewerken en uitvoeren