Zacznij terazZacznij za darmo

Udostępnianie klasy nadrzędnej

Domyślnie klasy R6 mają dostęp wyłącznie do funkcjonalności swojej bezpośredniej klasy nadrzędnej. Aby umożliwić dostęp przez wiele poziomów dziedziczenia, klasy pośrednie muszą zdefiniować aktywne powiązanie (active binding), które udostępnia ich klasę nadrzędną. Wygląda to następująco:

active = list(
  super_ = function() super
)

To ćwiczenie jest częścią kursu

Programowanie obiektowe z S3 i R6 w R

Zobacz kurs

Instrukcje do ćwiczenia

W twoim środowisku pracy jest już wstępnie zdefiniowana klasa kuchenki mikrofalowej.

  • Rozszerz klasę fancy microwave oven, dodając element listy active.
  • Dodaj aktywne powiązanie, które udostępni funkcjonalność jej klasy nadrzędnej.
    • Powiązanie powinno mieć nazwę super_.
    • Powinno być funkcją, która nie przyjmuje żadnych argumentów i po prostu zwraca super.
  • Utwórz instancję obiektu fancy microwave i przypisz ją do zmiennej a_fancy_microwave.
  • Wywołaj powiązanie super_ obiektu fancy microwave.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
___
Edytuj i uruchom kod