시작하기무료로 시작하기

상위 클래스를 노출하기

기본적으로 R6 클래스는 자신의 직속 상위 클래스의 기능에만 접근할 수 있어요. 여러 세대에 걸쳐 접근을 허용하려면, 중간 클래스들이 상위를 노출하는 활성 바인딩을 정의해야 해요. 형식은 다음과 같아요.

active = list(
  super_ = function() super
)

이 연습은 강의의 일부입니다

R에서 S3와 R6로 배우는 Object-Oriented Programming

강의 보기

연습 안내

작업 공간에 전자레인지 클래스가 미리 정의되어 있어요.

  • active 리스트 요소를 추가해 고급 전자레인지 클래스를 확장하세요.
  • 상위 클래스의 기능을 노출하는 활성 바인딩을 추가하세요.
    • 바인딩 이름은 super_로 하세요.
    • 인자를 받지 않고 super만 반환하는 함수여야 해요.
  • 고급 전자레인지 객체를 인스턴스화해 a_fancy_microwave에 할당하세요.
  • 고급 전자레인지의 super_ 바인딩을 호출하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Expose the parent functionality
fancy_microwave_oven_factory <- R6Class(
  "FancyMicrowaveOven",
  inherit = microwave_oven_factory,
  public = list(
    cook_baked_potato = function() {
      self$cook(3)
    },
    cook = function(time_seconds) {
      super$cook(time_seconds)
      message("Enjoy your dinner!")
    }
  ),
  # Add an active element with a super_ binding
  ___ = ___(
    ___ = ___
  )
)

# Instantiate a fancy microwave
a_fancy_microwave <- ___

# Call the super_ binding
___
코드 편집 및 실행