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
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
superzurückgibt.
- Die Binding soll
- Instanziiere ein „fancy microwave“-Objekt und weise es
a_fancy_microwavezu. - 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
___