Închide ușa
Metodele unui obiect R6 pot accesa câmpurile private ale acestuia folosind prefixul private$.
thing_factory <- R6Class(
"Thing",
private = list(
a_field = "a value",
another_field = 123
),
public = list(
do_something = function(x, y, z) {
# Access the private fields
paste(
private$a_field,
private$another_field
)
}
)
)
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. A fost actualizată pentru a include un câmp privat door_is_open și o metodă publică open_door.
- Adaugă o metodă publică numită
close_door()pentru a închide ușa cuptorului cu microunde.- Metoda nu trebuie să primească niciun argument.
- În corpul funcției, setează câmpul
door_is_openlaFALSE.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Add a close_door() method
microwave_oven_factory <- R6Class(
"MicrowaveOven",
private = list(
power_rating_watts = 800,
door_is_open = FALSE
),
public = list(
cook = function(time_seconds) {
Sys.sleep(time_seconds)
print("Your food is cooked!")
},
open_door = function() {
private$door_is_open <- TRUE
},
___ = ___
)
)