1. เรียนรู้
  2. /
  3. Courses
  4. /
  5. R에서 S3와 R6로 배우는 Object-Oriented Programming

Connected

Exercises

S3 메서드 만들기 (2)

제네릭에 대해 적절한 메서드를 찾지 못하면 오류가 발생해요. 예를 들어 현재 get_n_elements()는 data.frame에 대한 메서드만 있어요. 대신 행렬을 get_n_elements()에 전달하면 오류가 나타나요.

> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"

모든 입력 유형에 대해 수십 개의 메서드를 작성하는 대신, 특정 메서드가 없는 모든 타입을 처리하는 메서드를 만들 수 있어요. 이를 기본 메서드(default method)라고 하며, 항상 generic.default라는 이름을 가져요. 예를 들어, print.default()(docs)는 자체 print()(docs) 메서드가 없는 모든 타입의 객체를 출력해요.

คำแนะนำ

100 XP

제네릭 함수 get_n_elements()와 data.frame용 메서드가 워크스페이스에 정의되어 있어요.

  • ls.str()(docs)를 사용해 워크스페이스를 살펴보세요.
  • get_n_elements()의 S3 기본 메서드를 작성하세요.
    • 함수 이름은 제네릭 이름 뒤에 .과 default를 붙인 형태여야 해요.
    • 입력 인자는 x와 ...여야 해요.
    • 함수 본문은 한 줄로, 임의의 객체에 포함된 요소의 개수를 반환해야 해요. Make it Classy (1) 연습 문제에서 체스 게임에 사용한 기법과 같은 방법을 사용하세요.
  • ability.cov(docs) 데이터셋에 해당 메서드를 호출하고, 결과를 변수 n_elements_ability.cov에 할당하세요.