Să învățăm să gătim
Al treilea argument al funcției R6Class() se numește public și conține funcționalitatea disponibilă utilizatorului pentru obiectul respectiv. Acest argument trebuie să fie o listă, cu nume pentru fiecare element al său.
Elementul public al unei clase R6 conține funcționalitatea accesibilă utilizatorului. De obicei, va conține doar funcții.
Patternul actualizat pentru crearea unui generator de clasă R6 este următorul:
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Do something here
}
)
)
Acest exercițiu face parte din cursul
Programare orientată pe obiecte cu S3 și R6 în R
Instrucțiuni pentru exercițiu
O fabrică de cuptoare cu microunde a fost definită parțial pentru tine.
- Actualizează elementul
publical definiției pentru a include o metodăcook.- Metoda
cookeste o funcție. - Ar trebui să aibă un singur argument numit
time_seconds, care reprezintă durata de gătire. - În corpul metodei
cook, transmitetime_secondscătreSys.sleep()(docs), care nu face nimic pe durata timpului specificat. - La final, metoda
cookar trebui să afișeze cuprint()(docs) șirul"Your food is cooked!"
- Metoda
- Creează un obiect cuptor cu microunde numit
a_microwave_ovenfolosind metodanew()a fabriciimicrowave_oven_factory. - Apelează metoda
cook()a obiectuluia_microwave_oven, pentru 1 secundă.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
___