Lộ diện lớp Cha của bạn
Mặc định, các lớp R6 chỉ có quyền truy cập vào chức năng của lớp cha trực tiếp. Để cho phép truy cập qua nhiều thế hệ, các lớp trung gian cần định nghĩa một active binding để lộ (expose) lớp cha của chúng. Cú pháp như sau
active = list(
super_ = function() super
)
Bài tập này là một phần của khóa học
Lập trình hướng đối tượng với S3 và R6 trong R
Hướng dẫn bài tập
Một lớp lò vi sóng đã được định nghĩa sẵn trong workspace của bạn.
- Mở rộng lớp lò vi sóng cao cấp bằng cách thêm một phần tử danh sách
active. - Thêm một active binding để lộ chức năng của lớp cha.
- Binding nên được đặt tên là
super_. - Đây phải là một hàm không nhận đối số và chỉ trả về
super.
- Binding nên được đặt tên là
- Khởi tạo một đối tượng lò vi sóng cao cấp và gán vào
a_fancy_microwave. - Gọi binding
super_của lò vi sóng cao cấp.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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
___