Mengekspos Induk Anda
Secara bawaan, kelas R6 hanya memiliki akses ke fungsionalitas induk langsungnya. Untuk memungkinkan akses lintas beberapa generasi, kelas perantara perlu mendefinisikan active binding yang mengekspos induknya. Bentuknya adalah
active = list(
super_ = function() super
)
Latihan ini adalah bagian dari kursus
Pemrograman Berorientasi Objek dengan S3 dan R6 di R
Petunjuk latihan
Sebuah kelas microwave oven telah didefinisikan untuk Anda di ruang kerja.
- Perluas kelas fancy microwave oven dengan menambahkan elemen daftar
active. - Tambahkan active binding untuk mengekspos fungsionalitas induknya.
- Binding tersebut harus bernama
super_. - Ini harus berupa fungsi tanpa argumen yang hanya mengembalikan
super.
- Binding tersebut harus bernama
- Instansiasi objek fancy microwave dan simpan ke
a_fancy_microwave. - Panggil binding
super_milik fancy microwave.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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
___