Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

En fabrik för mikrovågsugnar har delvis definierats åt dig.

  • Uppdatera elementet public i definitionen så att det inkluderar en metod cook.
    • Metoden cook är en funktion.
    • Den ska ha ett argument som heter time_seconds för att ange tillagningstiden.
    • I metodkroppen för cook ska du skicka time_seconds till Sys.sleep() (docs), som pausar körningen under den angivna tiden.
    • Slutligen ska metoden cook använda print() (docs) för att skriva ut strängen "Your food is cooked!"
  • Skapa ett mikrovågsugnsobjekt kallat a_microwave_oven med metoden new() från microwave_oven_factory.
  • Anropa metoden cook()a_microwave_oven med 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
___
Redigera och kör kod