Nauka gotowania
Trzeci argument funkcji R6Class() nosi nazwę public i przechowuje funkcjonalność obiektu dostępną dla użytkownika. Powinien być listą, w której każdy element ma swoją nazwę.
Element public klasy R6 zawiera funkcjonalność dostępną dla użytkownika. Zazwyczaj składa się wyłącznie z funkcji.
Zaktualizowany wzorzec tworzenia generatora klas R6 wygląda następująco:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
To ćwiczenie jest częścią kursu
Programowanie obiektowe z S3 i R6 w R
Instrukcje do ćwiczenia
Fabryka kuchenki mikrofalowej została częściowo zdefiniowana.
- Zaktualizuj element
publicdefinicji, dodając metodęcook.- Metoda
cookjest funkcją. - Powinna przyjmować jeden argument o nazwie
time_seconds, określający czas gotowania. - W ciele metody
cookprzekażtime_secondsdoSys.sleep()(dokumentacja), która wstrzymuje działanie na podany czas. - Na koniec metoda
cookpowinna wywołaćprint()(dokumentacja) z ciągiem znaków"Your food is cooked!".
- Metoda
- Utwórz obiekt kuchenki mikrofalowej o nazwie
a_microwave_oven, korzystając z metodynew()fabrykimicrowave_oven_factory. - Wywołaj metodę
cook()obiektua_microwave_ovenz czasem gotowania 1 sekundy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Add a cook method to the factory definition
microwave_oven_factory <- R6Class(
"MicrowaveOven",
private = list(
power_rating_watts = 800
),
public = list(
___ = ___(___) {
___
___
}
)
)
# Create microwave oven object
a_microwave_oven <- ___
# Call cook method for 1 second
___