EmpezarEmpieza gratis

Exponer tu clase padre

De forma predeterminada, las clases R6 solo tienen acceso a la funcionalidad de su clase padre directa. Para permitir el acceso a través de varias generaciones, las clases intermedias deben definir una vinculación activa que exponga a su padre. Esto tiene la forma

active = list(
  super_ = function() super
)

Este ejercicio forma parte del curso

Programación orientada a objetos con S3 y R6 en R

Ver curso

Instrucciones del ejercicio

En tu espacio de trabajo ya hay una clase de microondas predefinida.

  • Amplía la clase de microondas "fancy" añadiendo un elemento active a la lista.
  • Añade una vinculación activa para exponer la funcionalidad de su clase padre.
    • La vinculación debe llamarse super_.
    • Debe ser una función que no reciba argumentos y simplemente devuelva super.
  • Instancia un objeto de microondas "fancy" y asígnalo a a_fancy_microwave.
  • Llama a la vinculación super_ del microondas "fancy".

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# Expose the parent functionality
fancy_microwave_oven_factory <- R6Class(
  "FancyMicrowaveOven",
  inherit = microwave_oven_factory,
  public = list(
    cook_baked_potato = function() {
      self$cook(3)
    },
    cook = function(time_seconds) {
      super$cook(time_seconds)
      message("Enjoy your dinner!")
    }
  ),
  # Add an active element with a super_ binding
  ___ = ___(
    ___ = ___
  )
)

# Instantiate a fancy microwave
a_fancy_microwave <- ___

# Call the super_ binding
___
Editar y ejecutar código