BaşlayınÜcretsiz başlayın

Ebeveynini Açığa Çıkarmak

Varsayılan olarak, R6 sınıfları yalnızca doğrudan ebeveynlerinin işlevlerine erişebilir. Birden fazla nesil boyunca erişime izin vermek için, aradaki sınıfların ebeveynlerini açığa çıkaran bir etkin bağ tanımlaması gerekir. Bu şu biçimdedir:

active = list(
  super_ = function() super
)

Bu egzersiz, kursun bir parçasıdır

R'de S3 ve R6 ile Nesne Yönelimli Programlama

Kursa Göz Atın

Egzersiz talimatları

Çalışma alanında senin için bir mikrodalga fırın sınıfı önceden tanımlandı.

  • active adlı bir liste öğesi ekleyerek şık mikrodalga fırın sınıfını genişlet.
  • Ebeveyninin işlevselliğini açığa çıkaracak bir etkin bağ ekle.
    • Bağın adı super_ olmalı.
    • Argüman almayan ve yalnızca super döndüren bir fonksiyon olmalı.
  • Bir şık mikrodalga nesnesi oluştur ve a_fancy_microwave değişkenine ata.
  • Şık mikrodalgadaki super_ bağını çağır.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# 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
___
Kodu Düzenle ve Çalıştır