Надання доступу до батьківського класу
Типово класи 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
___