MulaiMulai sekarang secara gratis

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

Lihat Kursus

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.
  • 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
___
Edit dan Jalankan Kode