Comece agoraComece grátis

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

Ver curso

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.
  • 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
___
Editar e Executar Código