Expondo seu Pai
Por padrão, classes R6 só têm acesso à funcionalidade de seu pai direto. Para permitir o acesso por várias gerações, as classes intermediárias precisam definir uma active binding que exponha seu pai. Isso tem a forma
active = list(
super_ = function() super
)
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
Instruções do exercicio
Uma classe de micro-ondas já foi predefinida para você no seu workspace.
- Estenda a classe de micro-ondas avançado adicionando um elemento
activeà lista. - Adicione uma active binding para expor a funcionalidade do pai.
- A binding deve se chamar
super_. - Deve ser uma função sem argumentos que simplesmente retorne
super.
- A binding deve se chamar
- Instancie um objeto de micro-ondas avançado e atribua a
a_fancy_microwave. - Chame a binding
super_do micro-ondas avançado.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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
___