CommencerCommencer gratuitement

Lire la puissance

Les données stockées par un objet R6 sont volontairement cachées à l’utilisateur en les conservant dans l’élément private. C’est le principe de l’encapsulation.

Si vous souhaitez donner accès à certaines valeurs, vous pouvez utiliser une liaison active. Il s’agit de 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’est-à-dire 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, et non comme une fonction.

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

Cet exercice fait partie du cours

Programmation orientée objet avec S3 et R6 en R

Afficher le cours

Instructions

Une usine 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.
    • La liaison active doit s’appeler power_rating_watts.
    • Elle est définie comme une fonction, sans argument.
    • Son corps doit simplement renvoyer le champ privé ..power_rating_watts.
  • Créez un objet four à micro-ondes et assignez-le à a_microwave_oven.
  • Lisez sa puissance.

Exercice interactif pratique

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

# 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