LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

Eine Mikrowellenfabrik wurde teilweise für dich definiert.

  • Aktualisiere das public-Element der Definition, um eine Methode cook hinzuzufügen.
    • Die Methode cook ist eine Funktion.
    • Sie sollte ein Argument namens time_seconds haben, das die Garzeit angibt.
    • Im Rumpf der Methode cook sollst du time_seconds an Sys.sleep() (docs) übergeben, das für die vorgegebene Zeit nichts tut.
    • Abschließend soll die Methode cook den String "Your food is cooked!" mit print() (docs) ausgeben.
  • Erstelle ein Mikrowellenobjekt namens a_microwave_oven mit der Methode new() der microwave_oven_factory.
  • Rufe die Methode cook() von a_microwave_oven fü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
___
Code bearbeiten und ausführen