Primitive generische Funktionen
Einige Kernfunktionen von R sind als primitive Funktionen definiert. Sie nutzen aus Performance-Gründen eine spezielle Technik, um C-Code aufzurufen. Beispiele für primitive Funktionen sind Sprachelemente wie if und for, Operatoren wie + und $ sowie mathematische Funktionen wie exp und sin. Zu den primitiven Funktionen gehören auch S3-Generics; die vollständige Liste der primitiven S3-Generics findest du mit .S3PrimitiveGenerics (docs).
Wenn ein S3-Generic primitiv ist, funktioniert die Methodensuche etwas anders. R sucht wie gewohnt anhand der class (docs) nach Methoden. Wird nichts gefunden, wird jedoch die interne C-Code-Funktion aufgerufen. (Im Unterschied zu regulären Generics, bei denen ein Fehler ausgelöst wird, wenn keine Methode gefunden wird.) Das bedeutet, dass grundlegendes Verhalten — wie das Berechnen der Länge — nicht kaputtgeht, wenn du die Klasse eines Objekts überschreibst.
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung mit S3 und R6 in R
Anleitung zur Übung
Ein Listenobjekt, dessen Klasse auf "hairstylist" überschrieben wurde, wurde in deinem Workspace der Variablen hair zugewiesen.
- Lass dir die Struktur von
hairmitstr()anzeigen (docs). - Liste alle primitiven S3-Generics auf, die R kennt.
- Nutze die Funktion
exists()(docs), um zu prüfen, dass keine Funktion mit dem Namenlength.hairstylistexistiert. Beachte, dass diese Funktion eine Zeichenkette als Eingabe erwartet. - Berechne die
length()(docs) der Variablenhair.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# View the structure of hair
___
# What primitive generics are available?
___
# Does length.hairstylist exist?
___
# What is the length of hair?
___