Leren koken
Het derde argument van R6Class() heet public en bevat de functionaliteit die voor de gebruiker zichtbaar is. Dit argument moet een lijst zijn, met namen voor elk van de elementen.
Het element public van een R6-klasse bevat de functionaliteit die voor de gebruiker beschikbaar is. Meestal bevat het alleen functies.
Het bijgewerkte patroon voor het maken van een R6-classgenerator ziet er als volgt uit:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
Deze oefening maakt deel uit van de cursus
Objectgeoriënteerd programmeren met S3 en R6 in R
Oefeninstructies
Een magnetronfabriek is gedeeltelijk voor je gedefinieerd.
- Werk het
public-element van de definitie bij zodat het een methodecookbevat.- De methode
cookis een functie. - Deze moet één argument hebben met de naam
time_secondsvoor de kooktijd. - In de body van de methode
cookgeef jetime_secondsdoor aanSys.sleep()(docs), dat niets doet gedurende de opgegeven tijd. - Laat de methode
cookten slotte de string"Your food is cooked!"print()en (docs).
- De methode
- Maak een magnetronobject met de naam
a_microwave_ovenmet denew()-methode vanmicrowave_oven_factory. - Roep de methode
cook()vana_microwave_ovenaan, voor 1 seconde.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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
___