Leer la potencia
Los datos que guarda un objeto R6 se ocultan deliberadamente al usuario manteniéndolos en el elemento private. Este es el principio de la encapsulación.
Si quieres dar acceso a alguno de esos valores, puedes usar una vinculación activa (active binding). Son funciones que se comportan como variables.
Las vinculaciones activas se guardan en el elemento active de un objeto R6. Para crear una vinculación activa de solo lectura que obtenga un campo de datos privado, creas una función sin argumentos que simplemente devuelva ese elemento privado.
El patrón para crear una vinculación activa de solo lectura es el siguiente:
thing_factory <- R6Class(
"Thing",
private = list(
..a_field = "a value"
),
active = list(
a_field = function() {
private$..a_field
}
)
)
La vinculación activa se llama como una variable de datos, no como una función.
a_thing <- thing_factory$new()
a_thing$a_field # no a_thing$a_field()
Este ejercicio forma parte del curso
Programación orientada a objetos con S3 y R6 en R
Instrucciones del ejercicio
Se ha definido parcialmente una fábrica de microondas para ti.
- Actualiza la definición para incluir una vinculación activa de solo lectura que obtenga la potencia nominal.
- La vinculación activa debe llamarse
power_rating_watts. - Se define como una función, sin argumentos.
- El cuerpo debe simplemente devolver el campo privado
..power_rating_watts.
- La vinculación activa debe llamarse
- Crea un objeto de microondas y asígnalo a
a_microwave_oven. - Lee su potencia nominal.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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
___