Aan de slagGa gratis aan de slag

Primitieve generieke functies

Een deel van de kernfunctionaliteit van R is gedefinieerd met primitieve functies. Die gebruiken om prestatie­redenen 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

Cursus bekijken

Oefeninstructies

Een lijstobject, waarvan de class is overschreven naar "hairstylist", is in je werkruimte toegewezen aan de variabele hair.

  • Bekijk de structuur van hair met str() (docs).
  • Geef alle S3-primitieve generics weer die R kent.
  • Gebruik de functie exists() (docs) om te controleren dat er geen functie met de naam length.hairstylist bestaat. Let op: deze functie verwacht een tekenreeks als invoer.
  • Bereken de length() (docs) van de variabele hair.

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?
___
Code bewerken en uitvoeren