Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

Een magnetronfabriek is gedeeltelijk voor je gedefinieerd.

  • Werk het public-element van de definitie bij zodat het een methode cook bevat.
    • De methode cook is een functie.
    • Deze moet één argument hebben met de naam time_seconds voor de kooktijd.
    • In de body van de methode cook geef je time_seconds door aan Sys.sleep() (docs), dat niets doet gedurende de opgegeven tijd.
    • Laat de methode cook ten slotte de string "Your food is cooked!" print()en (docs).
  • Maak een magnetronobject met de naam a_microwave_oven met de new()-methode van microwave_oven_factory.
  • Roep de methode cook() van a_microwave_oven aan, 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
___
Code bewerken en uitvoeren