LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

Ein Listenobjekt, dessen Klasse auf "hairstylist" überschrieben wurde, wurde in deinem Workspace der Variablen hair zugewiesen.

  • Lass dir die Struktur von hair mit str() 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 Namen length.hairstylist existiert. Beachte, dass diese Funktion eine Zeichenkette als Eingabe erwartet.
  • Berechne die length() (docs) der Variablen hair.

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?
___
Code bearbeiten und ausführen