CommencezCommencez gratuitement

Lire la puissance nominale

Les données stockées par un objet R6 sont volontairement cachées à l'utilisateur en les plaçant dans l'élément private. C'est le principe de l'« encapsulation ».

Si vous voulez donner accès à certaines valeurs, vous pouvez utiliser une liaison active. Ce sont des fonctions qui se comportent comme des variables.

Les liaisons actives sont stockées dans l'élément active d'un objet R6. Pour créer une liaison active permettant d'obtenir un champ de données privé (c.-à-d. une liaison « en lecture seule »), vous créez une fonction sans argument qui retourne simplement l'élément privé.

Le modèle pour créer une liaison active en lecture seule est le suivant :

thing_factory <- R6Class(
  "Thing",
  private = list(
    ..a_field = "a value"
  ),
  active = list(
    a_field = function() {
      private$..a_field
    }
  )
)

La liaison active s'utilise comme une variable de données, pas comme une fonction.

a_thing <- thing_factory$new()
a_thing$a_field   # et non a_thing$a_field()

Cette activité fait partie du cours

Programmation orientée objet avec S3 et R6 en R

Voir le cours

Instructions de l’exercice

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

  • Mettez à jour la définition pour inclure une liaison active en lecture seule afin d'obtenir la puissance nominale.
    • La liaison active doit s'appeler power_rating_watts.
    • Elle est définie comme une fonction sans argument.
    • Son corps doit simplement retourner le champ privé ..power_rating_watts.
  • Créez un objet four à micro-ondes et assignez-le à a_microwave_oven.
  • Lisez sa puissance nominale.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Add a binding for power rating
microwave_oven_factory <- R6Class(
  "MicrowaveOven",
  private = list(
    ..power_rating_watts = 800
  ),
  active = list(
    # Add the binding here
    ___ = ___

    
  )
)

# Make a microwave 
a_microwave_oven <- ___

# Get the power rating
___
Modifier et exécuter le code