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
Egzersiz talimatları
Çalışma alanında senin için bir mikrodalga fırın sınıfı önceden tanımlandı.
activeadlı 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
superdöndüren bir fonksiyon olmalı.
- Bağın adı
- Bir şık mikrodalga nesnesi oluştur ve
a_fancy_microwavedeğ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
___