Inizia subitoInizia gratis

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

Visualizza corso

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.
  • 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
___
Modifica ed esegui il codice