Lär dig tillaga mat
Det tredje argumentet till R6Class() heter public och innehåller den användarvända funktionaliteten för objektet. Det här argumentet ska vara en lista med namn på varje element.
Elementet public i en R6-klass innehåller den funktionalitet som är tillgänglig för användaren. Vanligtvis innehåller det bara funktioner.
Det uppdaterade mönstret för att skapa en R6-klassgenerator ser ut så här:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
Den här övningen är en del av kursen
Objektorienterad programmering med S3 och R6 i R
Övningsinstruktioner
En fabrik för mikrovågsugnar har delvis definierats åt dig.
- Uppdatera elementet
publici definitionen så att det inkluderar en metodcook.- Metoden
cookär en funktion. - Den ska ha ett argument som heter
time_secondsför att ange tillagningstiden. - I metodkroppen för
cookska du skickatime_secondstillSys.sleep()(docs), som pausar körningen under den angivna tiden. - Slutligen ska metoden
cookanvändaprint()(docs) för att skriva ut strängen"Your food is cooked!"
- Metoden
- Skapa ett mikrovågsugnsobjekt kallat
a_microwave_ovenmed metodennew()frånmicrowave_oven_factory. - Anropa metoden
cook()påa_microwave_ovenmed 1 sekund som tillagningstid.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
___