Expunerea clasei părinte
Implicit, clasele R6 au acces doar la funcționalitatea clasei lor părinte directe. Pentru a permite accesul pe mai multe generații, clasele intermediare trebuie să definească o legătură activă care expune clasa lor părinte. Aceasta are forma:
active = list(
super_ = function() super
)
Acest exercițiu face parte din cursul
Programare orientată pe obiecte cu S3 și R6 în R
Instrucțiuni pentru exercițiu
O clasă pentru cuptorul cu microunde a fost predefinită în spațiul tău de lucru.
- Extinde clasa cuptorului cu microunde fancy adăugând un element de tip listă
active. - Adaugă o legătură activă pentru a expune funcționalitatea clasei sale părinte.
- Legătura trebuie să se numească
super_. - Trebuie să fie o funcție fără argumente care returnează pur și simplu
super.
- Legătura trebuie să se numească
- Instanțiază un obiect de tip cuptor cu microunde fancy și atribuie-l variabilei
a_fancy_microwave. - Apelează legătura
super_a cuptorului cu microunde fancy.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
___