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
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.
- Aktywne powiązanie powinno mieć nazwę
- 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
___