Esporre il tuo genitore
Per impostazione predefinita, le classi R6 hanno accesso solo alle funzionalità del loro genitore diretto. Per consentire l'accesso attraverso più generazioni, le classi intermedie devono definire un active binding che esponga il loro genitore. Questo assume la forma
active = list(
super_ = function() super
)
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti con S3 e R6 in R
Istruzioni dell'esercizio
Una classe per un forno a microonde è già stata predefinita nel tuo workspace.
- Estendi la classe del forno a microonde avanzato aggiungendo un elemento
activealla lista. - Aggiungi un active binding per esporre la funzionalità del suo genitore.
- Il binding deve chiamarsi
super_. - Deve essere una funzione senza argomenti che restituisce semplicemente
super.
- Il binding deve chiamarsi
- Istanzia un oggetto forno a microonde avanzato e assegnalo a
a_fancy_microwave. - Chiama il binding
super_del forno a microonde avanzato.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
___