CommencerCommencer gratuitement

Apprendre à cuisiner

Le troisième argument de R6Class() s’appelle public et contient les fonctionnalités destinées à l’utilisateur de l’objet. Cet argument doit être une liste, avec des noms pour chacun de ses éléments.

L’élément public d’une classe R6 regroupe les fonctionnalités accessibles à l’utilisateur. En général, il ne contient que des fonctions.

Le modèle mis à jour pour créer un générateur de classe R6 est le suivant :

thing_factory <- R6Class(
  "Thing",
  private = list(
    a_field = "a value",
    another_field = 123
  ),
  public = list(
    do_something = function(x, y, z) {
      # Do something here
    }
  )
)

Cet exercice fait partie du cours

Programmation orientée objet avec S3 et R6 en R

Afficher le cours

Instructions

Une fabrique de four à micro-ondes a été partiellement définie pour vous.

  • Mettez à jour l’élément public de la définition pour y inclure une méthode cook.
    • La méthode cook est une fonction.
    • Elle doit avoir un argument nommé time_seconds pour indiquer la durée de cuisson.
    • Dans le corps de la méthode cook, vous devez passer time_seconds à Sys.sleep() (docs), qui ne fait rien pendant la durée indiquée.
    • Enfin, la méthode cook doit print() (docs) la chaîne "Your food is cooked!"
  • Créez un objet four à micro-ondes appelé a_microwave_oven à l’aide de la méthode new() de microwave_oven_factory.
  • Appelez la méthode cook() de a_microwave_oven pendant 1 seconde.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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
___
Modifier et exécuter le code