开始使用免费开始使用

公开父类

默认情况下,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
___
编辑并运行代码