Puanı Oku
Bir R6 nesnesinin sakladığı veriler, private öğesinde tutulduğu için kullanıcıdan özellikle gizlenir. Bu, kapsülleme ilkesidir.
Herhangi bir veri değerine erişim sağlamak istersen, etkin bir binding kullanabilirsin. Bunlar, değişken gibi davranan fonksiyonlardır.
Etkin binding'ler bir R6 nesnesinin active öğesinde saklanır. Özel bir veri alanını almak için (yani "salt okunur" bir binding) bir etkin binding oluşturmak istersen, argümansız ve yalnızca özel öğeyi döndüren bir fonksiyon yazarsın.
Salt okunur bir etkin binding oluşturma kalıbı şöyledir:
thing_factory <- R6Class(
"Thing",
private = list(
..a_field = "a value"
),
active = list(
a_field = function() {
private$..a_field
}
)
)
Etkin binding, fonksiyon gibi değil, veri değişkeni gibi çağrılır.
a_thing <- thing_factory$new()
a_thing$a_field # a_thing$a_field() değil
Bu egzersiz, kursun bir parçasıdır
R'de S3 ve R6 ile Nesne Yönelimli Programlama
Egzersiz talimatları
Senin için kısmen tanımlanmış bir mikrodalga fırın fabrikası var.
- Tanımı güncelleyip güç değerini almak için salt okunur bir etkin binding ekle.
- Etkin binding'in adı
power_rating_wattsolmalı. - Bu, argümansız bir fonksiyon olarak tanımlanır.
- Gövdesi yalnızca özel
..power_rating_wattsalanını döndürmeli.
- Etkin binding'in adı
- Bir mikrodalga fırın nesnesi oluştur ve
a_microwave_ovendeğişkenine ata. - Güç değerini oku.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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
___