ПочатиПочніть безкоштовно

Надання доступу до батьківського класу

Типово класи R6 мають доступ лише до функціональності свого безпосереднього батьківського класу. Щоб дозволити доступ через кілька поколінь, проміжні класи мають визначити активне привʼязування, яке відкриває їхнього батька. Це має вигляд

active = list(
  super_ = function() super
)

Ця вправа є частиною курсу

Об'єктно-орієнтоване програмування з S3 та R6 в R

Переглянути курс

Інструкції до вправи

Клас мікрохвильової печі вже попередньо визначено у вашому робочому середовищі.

  • Розширте клас «фенсі» мікрохвильової печі, додавши елемент списку active.
  • Додайте активне привʼязування, щоб відкрити функціональність батьківського класу.
    • Привʼязування має називатися super_.
    • Це має бути функція без аргументів, яка просто повертає super.
  • Створіть обʼєкт «фенсі» мікрохвильової печі та запишіть його в a_fancy_microwave.
  • Викличте привʼязування super_ «фенсі» мікрохвильової печі.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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
___
Редагувати та запускати код