Primitieve generieke functies
Een deel van de kernfunctionaliteit van R is gedefinieerd met primitieve functies. Die gebruiken om prestatieredenen een speciale techniek om C-code aan te roepen. Voorbeelden van primitieve functies zijn taalelementen zoals if en for, operatoren zoals + en $, en wiskundige functies zoals exp en sin. Primitieve functies omvatten ook S3-generics; de volledige lijst met S3-primitieve generics vind je met .S3PrimitiveGenerics (docs).
Wanneer een S3-generic primitief is, werkt het opzoekproces naar methods net iets anders. R zoekt eerst naar methods via de class (docs), zoals normaal. Als er niets wordt gevonden, wordt de interne C-codefunctie aangeroepen. (Vergelijk dit met gewone generics, waar een fout wordt gegenereerd als er geen method wordt gevonden.) Dit betekent dat als je de klasse van een object overschrijft, fundamenteel gedrag zoals het berekenen van de lengte niet kapot gaat.
Deze oefening maakt deel uit van de cursus
Objectgeoriënteerd programmeren met S3 en R6 in R
Oefeninstructies
Een lijstobject, waarvan de class is overschreven naar "hairstylist", is in je werkruimte toegewezen aan de variabele hair.
- Bekijk de structuur van
hairmetstr()(docs). - Geef alle S3-primitieve generics weer die R kent.
- Gebruik de functie
exists()(docs) om te controleren dat er geen functie met de naamlength.hairstylistbestaat. Let op: deze functie verwacht een tekenreeks als invoer. - Bereken de
length()(docs) van de variabelehair.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# View the structure of hair
___
# What primitive generics are available?
___
# Does length.hairstylist exist?
___
# What is the length of hair?
___