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
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.
- La liaison active doit s’appeler
- 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
___