시작하기무료로 시작하기

프리미티브 제네릭 함수

R의 일부 핵심 기능은 성능상의 이유로 C 코드를 특별한 방식으로 호출하는 프리미티브(primitive) 함수로 정의됩니다. 프리미티브 함수의 예로는 iffor 같은 언어 요소, +$ 같은 연산자, expsin 같은 수학 함수가 있어요. 프리미티브 함수 중에는 S3 제네릭도 포함되며, S3 프리미티브 제네릭의 전체 목록은 .S3PrimitiveGenerics(문서)로 확인할 수 있습니다.

S3 제네릭이 프리미티브일 때는 메서드를 찾는 조회 과정이 조금 다르게 동작합니다. R은 일반적으로처럼 class(문서)를 사용해 메서드를 찾지만, 아무것도 찾지 못하면 내부 C 코드 함수가 호출됩니다. (일반 제네릭은 메서드를 찾지 못하면 오류가 발생하는 것과 대조적이에요.) 이는 객체의 클래스를 오버라이드하더라도 길이를 계산하는 것과 같은 근본적인 동작이 깨지지 않음을 의미합니다.

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

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

강의 보기

연습 안내

클래스가 "hairstylist"로 오버라이드된 리스트 객체가 작업 공간의 변수 hair에 할당되어 있습니다.

  • str()(문서)로 hair의 구조를 확인하세요.
  • R이 알고 있는 모든 S3 프리미티브 제네릭을 나열하세요.
  • exists()(문서) 함수를 사용해 length.hairstylist라는 이름의 함수가 존재하지 않음을 확인하세요. 이 함수는 문자열 입력을 받는다는 점에 유의하세요.
  • hair 변수의 length()(문서)를 계산하세요.

실습형 인터랙티브 연습

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

# View the structure of hair
___

# What primitive generics are available?
___

# Does length.hairstylist exist?
___

# What is the length of hair?
___
코드 편집 및 실행