把門關上
R6 物件的方法可以用 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
)
}
)
)
本練習屬於課程
在 R 中使用 S3 與 R6 的物件導向程式設計
練習說明
已經為你部分定義了一個微波爐工廠。它已更新,包含一個私有欄位 door_is_open,以及一個公開方法 open_door。
- 新增一個名為
close_door()的公開方法,用來把微波爐門關上。- 這個方法不需要任何引數。
- 在函式主體中,將
door_is_open欄位設為FALSE。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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
},
___ = ___
)
)