Leggi la potenza nominale
I dati memorizzati da un oggetto R6 sono volutamente nascosti all'utente mantenendoli nell'elemento private. Questo è il principio dell’incapsulamento.
Se vuoi fornire accesso a certi valori dei dati, puoi usare un binding attivo. Si tratta di funzioni che si comportano come variabili.
I binding attivi sono archiviati nell'elemento active di un oggetto R6. Per creare un binding attivo che legga un campo dati privato (cioè un binding "di sola lettura"), definisci una funzione senza argomenti che restituisce semplicemente l'elemento privato.
Lo schema per creare un binding attivo di sola lettura è il seguente:
thing_factory <- R6Class(
"Thing",
private = list(
..a_field = "a value"
),
active = list(
a_field = function() {
private$..a_field
}
)
)
Il binding attivo si richiama come una variabile di dati, non come una funzione.
a_thing <- thing_factory$new()
a_thing$a_field # non a_thing$a_field()
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti con S3 e R6 in R
Istruzioni dell'esercizio
Una factory per forni a microonde è stata parzialmente definita per te.
- Aggiorna la definizione per includere un binding attivo di sola lettura che recuperi la potenza nominale.
- Il binding attivo deve chiamarsi
power_rating_watts. - Deve essere definito come una funzione, senza argomenti.
- Il corpo deve semplicemente restituire il campo privato
..power_rating_watts.
- Il binding attivo deve chiamarsi
- Crea un oggetto forno a microonde e assegnalo a
a_microwave_oven. - Leggi la sua potenza nominale.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
___