Prymitywne funkcje generyczne
Część podstawowych funkcji R jest zdefiniowana jako funkcje prymitywne, które wykorzystują specjalny mechanizm dostępu do kodu w C, co pozwala osiągnąć lepszą wydajność. Przykłady funkcji prymitywnych to elementy języka, takie jak if i for, operatory jak + i $, oraz funkcje matematyczne jak exp i sin. Wśród funkcji prymitywnych znajdziemy też funkcje generyczne S3 – pełną listę prymitywnych funkcji generycznych S3 można uzyskać za pomocą .S3PrimitiveGenerics (docs).
Kiedy funkcja generyczna S3 jest prymitywna, mechanizm wyszukiwania metod działa nieco inaczej. R szuka metod na podstawie class (docs) – tak jak zwykle – ale jeśli żadna nie zostanie znaleziona, wywołuje wewnętrzną funkcję w kodzie C. Różni się to od zwykłych funkcji generycznych, gdzie brak dopasowanej metody skutkuje błędem. Dzięki temu nadpisanie klasy obiektu nie psuje podstawowych operacji, takich jak obliczanie długości.
To ćwiczenie jest częścią kursu
Programowanie obiektowe z S3 i R6 w R
Instrukcje do ćwiczenia
W twoim środowisku roboczym dostępna jest zmienna hair – obiekt listy z nadpisaną klasą "hairstylist".
- Wyświetl strukturę zmiennej
hairza pomocąstr()(docs). - Wylistuj wszystkie prymitywne funkcje generyczne S3, które zna R.
- Użyj funkcji
exists()(docs), aby sprawdzić, że funkcja o nazwielength.hairstylistnie istnieje. Pamiętaj, że ta funkcja przyjmuje argument w postaci ciągu znaków. - Oblicz
length()(docs) zmiennejhair.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# View the structure of hair
___
# What primitive generics are available?
___
# Does length.hairstylist exist?
___
# What is the length of hair?
___