1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. R에서 S3와 R6로 배우는 Object-Oriented Programming

Connected

Bài tập

전력 제어하기

액티브 바인딩은 비공개 필드를 설정하는 데에도 사용할 수 있어요. 이 경우 바인딩 함수는 "value"라는 이름의 단일 인자를 받아야 해요.

읽기/쓰기 액티브 바인딩을 만드는 패턴은 다음과 같아요.

thing_factory <- R6Class(
  "Thing",
  private = list(
    ..a_field = "a value"
  ),
  active = list(
    a_field = function(value) {
      if(missing(value)) {
        private$..a_field
      } else {
        assert_is_a_string(value) # or another assertion
        private$..a_field <- value
      }
    }
  )
)

값은 바인딩을 함수가 아니라 데이터 변수처럼 할당해요.

a_thing <- thing_factory$new()
a_thing$a_field <- "a new value" # not a_thing$a_field("a new value")

Hướng dẫn

100 XP

전자레인지 클래스를 일부만 미리 정의해 두었어요.

  • 전자레인지 클래스 정의를 확장해서 active 리스트 요소를 포함시키세요.
  • 전력 수준을 제어하는 액티브 바인딩을 active 요소에 추가하세요.
    • 함수 이름은 power_level_watts여야 해요.
    • value라는 단일 인자를 받아야 해요.
    • 조회/설정할 비공개 변수 이름은 ..power_level_watts예요.
    • assert_is_a_number()(docs)를 사용해 value가 단일 숫자인지 확인하세요.
    • assert_all_are_in_closed_range()(docs)를 사용해 value가 0과 ..power_rating_watts 사이인지 확인하세요.
  • 전자레인지 오브젝트를 만들고 a_microwave_oven에 할당하세요.
  • 전력 수준을 조회하세요.
  • 전력 수준을 문자열 "400"으로 설정하려고 시도해 보세요.
  • 전력 수준을 1600으로 설정하려고 시도하세요.
  • 전력 수준을 400으로 설정하세요.