ПочатиПочніть безкоштовно

Прочитайте показник потужності

Дані, які зберігає об'єкт R6, навмисно приховано від користувача, оскільки вони розміщені в елементі private. Це принцип інкапсуляції.

Якщо потрібно надати доступ до певних значень даних, можна використати активне зв'язування. Це функції, що поводяться як змінні.

Активні зв'язування зберігаються в елементі active об'єкта R6. Щоб створити активне зв'язування для отримання приватного поля даних (тобто „тільки для читання"), створіть функцію без аргументів, яка просто повертає приватний елемент.

Шаблон створення активного зв'язування лише для читання такий:

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

Активне зв'язування викликається як змінна даних, а не як функція.

a_thing <- thing_factory$new()
a_thing$a_field   # не a_thing$a_field()

Ця вправа є частиною курсу

Об'єктно-орієнтоване програмування з S3 та R6 в R

Переглянути курс

Інструкції до вправи

Фабрику мікрохвильової печі частково визначено для вас.

  • Оновіть визначення, щоб додати активне зв'язування лише для читання для отримання показника потужності.
    • Активне зв'язування має називатися power_rating_watts.
    • Воно визначається як функція без аргументів.
    • Тіло має просто повертати приватне поле ..power_rating_watts.
  • Створіть об'єкт мікрохвильової печі та присвойте його змінній a_microwave_oven.
  • Прочитайте його показник потужності.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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
___
Редагувати та запускати код