Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

Una factory di forni a microonde è stata parzialmente definita per te.

  • Aggiorna l'elemento public della definizione per includere un metodo cook.
    • Il metodo cook è una funzione.
    • Dovrebbe avere un argomento chiamato time_seconds per indicare il tempo di cottura.
    • Nel corpo del metodo cook, dovresti passare time_seconds a Sys.sleep() (docs), che non fa nulla per il tempo indicato.
    • Infine, il metodo cook dovrebbe print() (docs) la stringa "Your food is cooked!"
  • Crea un oggetto forno a microonde chiamato a_microwave_oven usando il metodo new() di microwave_oven_factory.
  • Chiama il metodo cook() di a_microwave_oven per 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
___
Modifica ed esegui il codice