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메서드 정의를 완성하세요.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()
___