상위 클래스를 노출하기
기본적으로 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
___