1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Objektově orientované programování s S3 a R6 v R

Connected

Cvičení

Přečtení výkonu

Data uložená v R6 objektu jsou záměrně skryta před uživatelem v elementu private. Toto je princip zapouzdření (encapsulation).

Pokud chceš zpřístupnit některé datové hodnoty, můžeš použít aktivní binding. Aktivní bindingy jsou funkce, které se chovají jako proměnné.

Aktivní bindingy jsou uloženy v elementu active R6 objektu. Chceš-li vytvořit aktivní binding pro čtení privátního datového pole (tzv. binding „pouze pro čtení"), vytvoříš funkci bez argumentů, která jednoduše vrátí daný privátní element.

Vzor pro vytvoření aktivního bindingu pouze pro čtení vypadá takto:

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

Aktivní binding se volá jako datová proměnná, nikoli jako funkce.

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

Pokyny

100 XP

Definice továrny na mikrovlnné trouby je pro tebe částečně připravená.

  • Doplň definici o aktivní binding pouze pro čtení, který zpřístupní výkon v wattech.
    • Aktivní binding pojmenuj power_rating_watts.
    • Definuj ho jako funkci bez argumentů.
    • Tělo funkce by mělo jednoduše vracet privátní pole ..power_rating_watts.
  • Vytvoř objekt mikrovlnné trouby a přiřaď ho do proměnné a_microwave_oven.
  • Přečti hodnotu jeho výkonu.