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

Connected

Cvičení

Ovládání výkonu

Aktivní vazby lze také použít k nastavování privátních polí. V takovém případě by funkce vazby měla přijímat jeden argument s názvem „value".

Vzor pro vytvoření aktivní vazby pro čtení i zápis vypadá takto:

thing_factory <- R6Class(
  "Thing",
  private = list(
    ..a_field = "a value"
  ),
  active = list(
    a_field = function(value) {
      if(missing(value)) {
        private$..a_field
      } else {
        assert_is_a_string(value) # nebo jiná assertion
        private$..a_field <- value
      }
    }
  )
)

Hodnoty se přiřazují, jako by vazba byla datová proměnná, nikoli funkce.

a_thing <- thing_factory$new()
a_thing$a_field <- "a new value" # ne a_thing$a_field("a new value")

Pokyny

100 XP

Třída mikrovlnné trouby je pro tebe částečně připravená.

  • Rozšiř definici třídy mikrovlnné trouby o element seznamu active.
  • Přidej do elementu active aktivní vazbu pro ovládání úrovně výkonu.
    • Funkce by se měla jmenovat power_level_watts.
    • Měla by přijímat jeden argument s názvem value.
    • Privátní proměnná pro získání/nastavení hodnoty se jmenuje ..power_level_watts.
    • Použij assert_is_a_number() (docs) pro ověření, že value je jediné číslo.
    • Použij assert_all_are_in_closed_range() (docs) pro ověření, že value je v rozsahu od 0 do ..power_rating_watts.
  • Vytvoř objekt mikrovlnné trouby a přiřaď ho do proměnné a_microwave_oven.
  • Získej aktuální úroveň výkonu.
  • Zkus nastavit úroveň výkonu na hodnotu "400" jako řetězec.
  • Zkus nastavit úroveň výkonu na 1600.
  • Nastav úroveň výkonu na 400.