Začněte nyníZačněte zdarma

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()

Toto cvičení je součástí kurzu

Objektově orientované programování s S3 a R6 v R

Zobrazit kurz

Pokyny k cvičení

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.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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
___
Upravit a spustit kód