ÎncepețiÎncepe gratuit

Expunerea clasei părinte

Implicit, clasele R6 au acces doar la funcționalitatea clasei lor părinte directe. Pentru a permite accesul pe mai multe generații, clasele intermediare trebuie să definească o legătură activă care expune clasa lor părinte. Aceasta are forma:

active = list(
  super_ = function() super
)

Acest exercițiu face parte din cursul

Programare orientată pe obiecte cu S3 și R6 în R

Vezi cursul

Instrucțiuni pentru exercițiu

O clasă pentru cuptorul cu microunde a fost predefinită în spațiul tău de lucru.

  • Extinde clasa cuptorului cu microunde fancy adăugând un element de tip listă active.
  • Adaugă o legătură activă pentru a expune funcționalitatea clasei sale părinte.
    • Legătura trebuie să se numească super_.
    • Trebuie să fie o funcție fără argumente care returnează pur și simplu super.
  • Instanțiază un obiect de tip cuptor cu microunde fancy și atribuie-l variabilei a_fancy_microwave.
  • Apelează legătura super_ a cuptorului cu microunde fancy.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
___
Editează și rulează codul