关上门
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
},
___ = ___
)
)