ПочатиПочніть безкоштовно

Примітивні дженерик-функції

Деяка базова функціональність R визначена за допомогою примітивних функцій, які з міркувань продуктивності використовують спеціальну техніку доступу до C-коду. Приклади примітивних функцій: елементи мови, як-от if і for, оператори на кшталт + і $, а також математичні функції, як-от exp і sin. Серед примітивних функцій є й S3-дженерики; повний перелік примітивних S3-дженериків можна отримати за допомогою .S3PrimitiveGenerics (docs).

Коли S3-дженерик є примітивним, процес пошуку методів працює трохи інакше. R, як зазвичай, шукатиме методи за допомогою class (docs), але якщо нічого не знайдено, буде викликано внутрішню C-функцію. (Порівняйте це зі звичайними дженериками, де у разі відсутності методу виникає помилка.) Це означає, що якщо ви перевизначите клас об'єкта, фундаментальна поведінка, як-от обчислення довжини, не зламається.

Ця вправа є частиною курсу

Об'єктно-орієнтоване програмування з S3 та R6 в R

Переглянути курс

Інструкції до вправи

У вашому робочому середовищі до змінної hair присвоєно об'єкт списку, у якого клас перевизначено як "hairstylist".

  • Перегляньте структуру hair за допомогою str() (docs).
  • Виведіть усі примітивні S3-дженерики, про які знає R.
  • Використайте функцію exists() (docs), щоб перевірити, що функції з назвою length.hairstylist не існує. Зверніть увагу, що ця функція приймає символьний аргумент.
  • Обчисліть length() (docs) для змінної hair.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# View the structure of hair
___

# What primitive generics are available?
___

# Does length.hairstylist exist?
___

# What is the length of hair?
___
Редагувати та запускати код