公開你的父類別
在預設情況下,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
___