Kochen lernen
Das dritte Argument von R6Class() heißt public und enthält die benutzerorientierte Funktionalität des Objekts. Dieses Argument sollte eine Liste sein, mit Namen für jedes ihrer Elemente.
Das public-Element einer R6-Klasse enthält die Funktionen, die dem Nutzer zur Verfügung stehen. Meistens enthält es nur Funktionen.
Das aktualisierte Muster zum Erstellen eines R6-Klassengenerators sieht so aus:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung mit S3 und R6 in R
Anleitung zur Übung
Eine Mikrowellenfabrik wurde teilweise für dich definiert.
- Aktualisiere das
public-Element der Definition, um eine Methodecookhinzuzufügen.- Die Methode
cookist eine Funktion. - Sie sollte ein Argument namens
time_secondshaben, das die Garzeit angibt. - Im Rumpf der Methode
cooksollst dutime_secondsanSys.sleep()(docs) übergeben, das für die vorgegebene Zeit nichts tut. - Abschließend soll die Methode
cookden String"Your food is cooked!"mitprint()(docs) ausgeben.
- Die Methode
- Erstelle ein Mikrowellenobjekt namens
a_microwave_ovenmit der Methodenew()dermicrowave_oven_factory. - Rufe die Methode
cook()vona_microwave_ovenfür 1 Sekunde auf.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Add a cook method to the factory definition
microwave_oven_factory <- R6Class(
"MicrowaveOven",
private = list(
power_rating_watts = 800
),
public = list(
___ = ___(___) {
___
___
}
)
)
# Create microwave oven object
a_microwave_oven <- ___
# Call cook method for 1 second
___