Aprendendo a cozinhar
O terceiro argumento de R6Class() é chamado public e concentra a funcionalidade voltada ao usuário do objeto. Esse argumento deve ser uma lista, com nomes para cada um de seus elementos.
O elemento public de uma classe R6 contém a funcionalidade disponível ao usuário. Normalmente, ele conterá apenas funções.
O padrão atualizado para criar um gerador de classe R6 é o seguinte:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
Instruções do exercicio
Uma fábrica de micro-ondas foi parcialmente definida para você.
- Atualize o elemento
publicda definição para incluir um métodocook.- O método
cooké uma função. - Ele deve ter um argumento chamado
time_secondspara indicar o tempo de cozimento. - No corpo do método
cook, você deve passartime_secondsparaSys.sleep()(docs), que não faz nada durante o tempo estipulado. - Por fim, o método
cookdeve chamarprint()(docs) com a string"Your food is cooked!"
- O método
- Crie um objeto micro-ondas chamado
a_microwave_ovenusando o métodonew()demicrowave_oven_factory. - Chame o método
cook()dea_microwave_ovenpor 1 segundo.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# Add a cook method to the factory definition
microwave_oven_factory <- R6Class(
"MicrowaveOven",
private = list(
power_rating_watts = 800
),
public = list(
___ = ___(___) {
___
___
}
)
)
# Create microwave oven object
a_microwave_oven <- ___
# Call cook method for 1 second
___