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