1. Learn
  2. /
  3. Cursuri
  4. /
  5. Programare orientată pe obiecte cu S3 și R6 în R

Connected

exercițiu

Citește Ratingul

Datele stocate de un obiect R6 sunt ascunse în mod deliberat față de utilizator, prin păstrarea lor în elementul private. Acesta este principiul încapsulării.

Dacă vrei să oferi acces la oricare dintre valorile de date, poți folosi un active binding. Acestea sunt funcții care se comportă ca variabile.

Active binding-urile sunt stocate în elementul active al unui obiect R6. Pentru a crea un active binding care să ofere acces la un câmp de date privat (adică un binding „doar pentru citire"), creezi o funcție fără argumente care returnează pur și simplu elementul privat.

Pattern-ul pentru crearea unui active binding doar pentru citire este următorul:

thing_factory <- R6Class(
  "Thing",
  private = list(
    ..a_field = "a value"
  ),
  active = list(
    a_field = function() {
      private$..a_field
    }
  )
)

Active binding-ul se apelează ca o variabilă de date, nu ca o funcție.

a_thing <- thing_factory$new()
a_thing$a_field   # not a_thing$a_field()

Instrucțiuni

100 XP

Un factory pentru cuptoare cu microunde a fost definit parțial pentru tine.

  • Actualizează definiția pentru a include un active binding doar pentru citire, care să returneze puterea nominală.
    • Active binding-ul trebuie să se numească power_rating_watts.
    • Acesta este definit ca o funcție, fără argumente.
    • Corpul funcției trebuie să returneze pur și simplu câmpul privat ..power_rating_watts.
  • Creează un obiect cuptor cu microunde și atribuie-l variabilei a_microwave_oven.
  • Citește puterea sa nominală.