시작하기무료로 시작하기

Next Method 작성하기

객체에 여러 클래스가 있을 때, 이들 클래스에 대한 메서드를 연쇄적으로 호출하고 싶을 수 있어요. 이를 위해 NextMethod()를 사용합니다 (문서).

S3 메서드는 다음과 같은 형태가 됩니다:

an_s3_method.some_class <- function(x, ...)
{
  # some_class에 대해 동작한 다음
  NextMethod("an_s3_method")
}

즉, NextMethod()는 메서드의 마지막 줄에 와야 합니다.

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

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

강의 보기

연습 안내

작업 공간에는 변수 kitty와 제네릭 함수 what_am_i()가 미리 정의되어 있어요.

  • ls.str()로 작업 공간을 확인하세요.
  • what_am_i()cat 메서드 정의를 완성하세요.
    • message() (문서)로 "I'm a cat"을(를) 출력하세요.
    • 제네릭 이름을 문자열로 전달하여 NextMethod() (문서)를 호출하세요.
  • what_am_i()mammal 메서드를 정의하세요.
    • 인자는 cat 메서드와 동일합니다.
    • message()"I'm a mammal"을(를) 출력하세요.
    • NextMethod()를 호출하세요.
  • what_am_i()character 메서드를 정의하세요.
    • 인자는 cat 메서드와 동일합니다.
    • message()"I'm a character vector"을(를) 출력하세요.
    • NextMethod()는 호출하지 마세요.
  • kitty를 입력으로 하여 what_am_i()를 호출하고, 세 가지 메시지가 모두 표시되는지 확인하세요.

실습형 인터랙티브 연습

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

# Inspect your workspace
ls.str()

# cat method
what_am_i.cat <- function(x, ...)
{
  # Write a message
  ___
  # Call NextMethod
  ___
}

# mammal method
___ <- ___

# character method
___ <- ___

# Call what_am_i()
___
코드 편집 및 실행