Comece agoraComece grátis

Ler a classificação

Os dados armazenados por um objeto R6 são deliberadamente escondidos do usuário, mantendo-os no elemento private. Esse é o princípio da encapsulação.

Se você quiser fornecer acesso a qualquer valor de dado, pode usar uma ligação ativa (active binding). Elas são funções que se comportam como variáveis.

As ligações ativas ficam no elemento active de um objeto R6. Para criar uma ligação ativa que obtenha um campo de dados privado (ou seja, uma ligação "somente leitura"), você cria uma função sem argumentos que apenas retorna o elemento privado.

O padrão para criar uma ligação ativa somente leitura é o seguinte:

thing_factory <- R6Class(
  "Thing",
  private = list(
    ..a_field = "a value"
  ),
  active = list(
    a_field = function() {
      private$..a_field
    }
  )
)

A ligação ativa é chamada como uma variável de dados, não como uma função.

a_thing <- thing_factory$new()
a_thing$a_field   # não a_thing$a_field()

Este exercicio faz parte do curso

Programação Orientada a Objetos com S3 e R6 em R

Ver curso

Instruções do exercicio

Uma fábrica de micro-ondas foi parcialmente definida para você.

  • Atualize a definição para incluir uma ligação ativa de somente leitura para obter a potência nominal.
    • A ligação ativa deve se chamar power_rating_watts.
    • Ela é definida como uma função, sem argumentos.
    • O corpo deve simplesmente retornar o campo privado ..power_rating_watts.
  • Crie um objeto de micro-ondas e atribua-o a a_microwave_oven.
  • Leia sua potência nominal.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

# Add a binding for power rating
microwave_oven_factory <- R6Class(
  "MicrowaveOven",
  private = list(
    ..power_rating_watts = 800
  ),
  active = list(
    # Add the binding here
    ___ = ___

    
  )
)

# Make a microwave 
a_microwave_oven <- ___

# Get the power rating
___
Editar e Executar Código