BaşlayınÜcretsiz başlayın

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

Kursa Göz Atın

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_watts olmalı.
    • Bu, argümansız bir fonksiyon olarak tanımlanır.
    • Gövdesi yalnızca özel ..power_rating_watts alanını döndürmeli.
  • Bir mikrodalga fırın nesnesi oluştur ve a_microwave_oven değ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
___
Kodu Düzenle ve Çalıştır