Zacznij terazZacznij za darmo

Odczytaj ocenę mocy

Dane przechowywane przez obiekt R6 są celowo ukryte przed użytkownikiem – przechowuje się je w elemencie private. To właśnie jest zasada enkapsulacji.

Jeśli chcesz udostępnić dostęp do wybranych wartości danych, możesz użyć aktywnego powiązania. Są to funkcje, które zachowują się jak zmienne.

Aktywne powiązania są przechowywane w elemencie active obiektu R6. Aby utworzyć aktywne powiązanie pozwalające odczytać prywatne pole danych (czyli powiązanie „tylko do odczytu"), tworzysz funkcję bez argumentów, która po prostu zwraca odpowiedni element prywatny.

Szablon tworzenia aktywnego powiązania tylko do odczytu wygląda następująco:

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

Aktywne powiązanie wywołuje się jak zmienną, a nie jak funkcję.

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

To ćwiczenie jest częścią kursu

Programowanie obiektowe z S3 i R6 w R

Zobacz kurs

Instrukcje do ćwiczenia

Fabryka kuchenki mikrofalowej została już częściowo zdefiniowana.

  • Uzupełnij definicję o aktywne powiązanie tylko do odczytu, które umożliwi odczyt oceny mocy.
    • Aktywne powiązanie powinno mieć nazwę power_rating_watts.
    • Zdefiniuj je jako funkcję bez argumentów.
    • Ciało funkcji powinno po prostu zwracać prywatne pole ..power_rating_watts.
  • Utwórz obiekt kuchenki mikrofalowej i przypisz go do zmiennej a_microwave_oven.
  • Odczytaj jego ocenę mocy.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
___
Edytuj i uruchom kod