LoslegenKostenlos loslegen

Den Parent freilegen

Standardmäßig haben R6-Klassen nur Zugriff auf die Funktionalität ihres direkten Parents. Damit der Zugriff über mehrere Generationen hinweg möglich ist, müssen die Zwischenklassen eine Active Binding definieren, die ihren Parent freilegt. Das hat die Form

active = list(
  super_ = function() super
)

Diese Übung ist Teil des Kurses

Objektorientierte Programmierung mit S3 und R6 in R

Kurs anzeigen

Anleitung zur Übung

In deinem Workspace ist bereits eine Mikrowellenklasse vordefiniert.

  • Erweitere die „fancy microwave oven“-Klasse, indem du ein active-Listenelement hinzufügst.
  • Füge eine Active Binding hinzu, um die Funktionalität ihres Parents freizulegen.
    • Die Binding soll super_ heißen.
    • Sie soll eine Funktion sein, die keine Argumente nimmt und einfach super zurückgibt.
  • Instanziiere ein „fancy microwave“-Objekt und weise es a_fancy_microwave zu.
  • Rufe die super_-Binding der „fancy microwave“ auf.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen