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
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.
- Active binding tersebut harus diberi nama
- 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
___