開始使用免費開始

公開你的父類別

在預設情況下,R6 類別只能存取其直接父類別的功能。若要允許跨越多代存取,中間的類別需要定義一個作用中繫結來公開它們的父類別。其形式為:

active = list(
  super_ = function() super
)

本練習屬於課程

在 R 中使用 S3 與 R6 的物件導向程式設計

檢視課程

練習說明

在你的工作環境中已預先定義了一個微波爐類別。

  • 透過加入 active 清單元素,擴充 fancy microwave 類別。
  • 新增一個作用中繫結來公開其父類別的功能。
    • 這個繫結名稱應為 super_
    • 它應該是一個不帶參數、僅回傳 super 的函式。
  • 建立一個 fancy microwave 物件實例,並指派給 a_fancy_microwave
  • 呼叫這個 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
___
編輯並執行程式碼