MulaiMulai sekarang secara gratis

Baca Rating Daya

Data yang disimpan oleh sebuah objek R6 sengaja disembunyikan dari pengguna dengan menempatkannya di elemen private. Inilah prinsip enkapsulasi.

Jika Anda ingin menyediakan akses ke nilai data tertentu, Anda dapat menggunakan active binding. Ini adalah fungsi yang berperilaku seperti variabel.

Active binding disimpan dalam elemen active dari sebuah objek R6. Untuk membuat active binding yang mengambil field data privat (yaitu binding "hanya-baca"), Anda membuat fungsi tanpa argumen yang hanya mengembalikan elemen privat tersebut.

Pola untuk membuat active binding hanya-baca adalah sebagai berikut:

thing_factory <- R6Class(
  "Thing",
  private = list(
    ..a_field = "a value"
  ),
  active = list(
    a_field = function() {
      private$..a_field
    }
  )
)

Active binding dipanggil seperti variabel data, bukan seperti fungsi.

a_thing <- thing_factory$new()
a_thing$a_field   # bukan a_thing$a_field()

Latihan ini adalah bagian dari kursus

Pemrograman Berorientasi Objek dengan S3 dan R6 di R

Lihat Kursus

Petunjuk latihan

Sebuah pabrik microwave oven telah didefinisikan sebagian untuk Anda.

  • Perbarui definisinya agar menyertakan active binding hanya-baca untuk mendapatkan rating daya.
    • Active binding tersebut harus diberi nama power_rating_watts.
    • Ini didefinisikan sebagai fungsi tanpa argumen.
    • Isinya hanya mengembalikan field privat ..power_rating_watts.
  • Buat objek microwave oven dan simpan ke a_microwave_oven.
  • Baca rating dayanya.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# Add a binding for power rating
microwave_oven_factory <- R6Class(
  "MicrowaveOven",
  private = list(
    ..power_rating_watts = 800
  ),
  active = list(
    # Add the binding here
    ___ = ___

    
  )
)

# Make a microwave 
a_microwave_oven <- ___

# Get the power rating
___
Edit dan Jalankan Kode