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

Connected

Bài tập

이름에 담긴 의미는?

S3는 엄격한 이름 규칙을 사용해요. 모든 S3 메서드는 generic.class 형태의 이름을 가져요.

하지만 그 역은 성립하지 않아요. 점(.)이 들어간 이름이라고 해서 S3 메서드인 것은 아니에요. 이는 S 언어 초창기부터 존재하던 많은 함수에서 볼 수 있는 현상이에요. 예를 들어 all.equal()(docs)은 실제로 메서드가 아니라 S3 제네릭이에요. (이런 점에서 leopard.case 표기법은 혼란을 줄 수 있어요.)

어떤 함수가 S3 제네릭인지 확인하려면 pryr 패키지의 is_s3_generic()(docs)을 호출하면 돼요. 콘솔에 함수 이름을 입력해 출력해 보고, 그 안에서 UseMethod()를 호출하는지도 확인할 수 있어요.

비슷하게, 함수가 S3 메서드인지 확인하려면 pryr의 is_s3_method()(docs)를 호출하면 돼요. 예를 들어,

library(pryr)
is_s3_generic("t")           # 전치(Transpose)용 제네릭 함수
is_s3_method("t.data.frame") # data.frame 전치 메서드
is_s3_method("t.test")       # Student의 t-검정 함수

다음 중 옳은 설명은 무엇인가요?

  1. is.complex()(docs)는 complex 객체에 작동하는 is 제네릭의 메서드이다.
  2. seq.Date()(docs)는 Date 객체에 작동하는 seq 제네릭의 메서드이다.
  3. is.na.data.frame()(docs)는 data.frame 객체에 작동하는 is.na 제네릭의 메서드이다.
  4. sort()(docs)는 제네릭 함수이다.
  5. order()(docs)는 제네릭 함수이다.

Hướng dẫn

50 XP

Các phương án trả lời