公开父类
默认情况下,R6 类只能访问其直接父类的功能。若要在多代之间访问,必须由中间类定义一个活动绑定来公开其父类。其形式如下:
active = list(
super_ = function() super
)
本练习是课程的一部分
R 中的 S3 与 R6 面向对象编程
练习说明
工作区中已为您预定义了一个微波炉类。
- 通过添加
active列表元素来扩展高级微波炉类。 - 添加一个活动绑定以公开其父类的功能。
- 该绑定应命名为
super_。 - 它应为一个不接收参数并直接返回
super的函数。
- 该绑定应命名为
- 实例化一个高级微波炉对象,并将其赋值给
a_fancy_microwave。 - 调用该高级微波炉的
super_绑定。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Expose the parent functionality
fancy_microwave_oven_factory <- R6Class(
"FancyMicrowaveOven",
inherit = microwave_oven_factory,
public = list(
cook_baked_potato = function() {
self$cook(3)
},
cook = function(time_seconds) {
super$cook(time_seconds)
message("Enjoy your dinner!")
}
),
# Add an active element with a super_ binding
___ = ___(
___ = ___
)
)
# Instantiate a fancy microwave
a_fancy_microwave <- ___
# Call the super_ binding
___