Imparare a cucinare
Il terzo argomento di R6Class() si chiama public e contiene le funzionalità rivolte all'utente per l'oggetto. Questo argomento dovrebbe essere una lista, con nomi per ciascun elemento.
L'elemento public di una classe R6 contiene le funzionalità disponibili per l'utente. Di solito conterrà solo funzioni.
Il pattern aggiornato per creare un generatore di classi R6 è il seguente:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti con S3 e R6 in R
Istruzioni dell'esercizio
Una factory di forni a microonde è stata parzialmente definita per te.
- Aggiorna l'elemento
publicdella definizione per includere un metodocook.- Il metodo
cookè una funzione. - Dovrebbe avere un argomento chiamato
time_secondsper indicare il tempo di cottura. - Nel corpo del metodo
cook, dovresti passaretime_secondsaSys.sleep()(docs), che non fa nulla per il tempo indicato. - Infine, il metodo
cookdovrebbeprint()(docs) la stringa"Your food is cooked!"
- Il metodo
- Crea un oggetto forno a microonde chiamato
a_microwave_ovenusando il metodonew()dimicrowave_oven_factory. - Chiama il metodo
cook()dia_microwave_ovenper 1 secondo.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
___