Kom igångKom igång gratis

Primitiva generiska funktioner

En del av Rs grundläggande funktionalitet är definierad med hjälp av primitiva funktioner, som använder en särskild teknik för att anropa C-kod – av prestandaskäl. Exempel på primitiva funktioner är språkelement som if och for, operatorer som + och $, samt matematiska funktioner som exp och sin. Primitiva funktioner kan också vara S3-generiker; den fullständiga listan över primitiva S3-generiker hittar du med .S3PrimitiveGenerics (docs).

När en S3-generiker är primitiv fungerar metoduppslagningen lite annorlunda. R letar efter metoder via class (docs) som vanligt, men om ingen metod hittas anropas den interna C-kodfunktionen i stället. (Jämför detta med vanliga generiker, där ett fel kastas om ingen metod hittas.) Det innebär att om du åsidosätter klassen för ett objekt, kommer grundläggande beteenden som att beräkna längden inte att sluta fungera.

Den här övningen är en del av kursen

Objektorienterad programmering med S3 och R6 i R

Visa kurs

Övningsinstruktioner

Ett listobjekt vars klass har åsidosatts till "hairstylist" finns tillgängligt i din workspace under variabeln hair.

  • Visa strukturen för hair med str() (docs).
  • Lista alla primitiva S3-generiker som R känner till.
  • Använd funktionen exists() (docs) för att kontrollera att det inte finns någon funktion med namnet length.hairstylist. Observera att funktionen tar en textsträng som indata.
  • Beräkna length() (docs) för variabeln hair.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# View the structure of hair
___

# What primitive generics are available?
___

# Does length.hairstylist exist?
___

# What is the length of hair?
___
Redigera och kör kod