EmpezarEmpieza gratis

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

Ver curso

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.
  • 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
___
Editar y ejecutar código