Fonctions génériques primitives
Une partie des fonctionnalités de base de R est définie au moyen de fonctions primitives, qui utilisent une technique spéciale pour accéder au code C, pour des raisons de performance. Parmi les fonctions primitives, on retrouve des éléments du langage comme if et for, des opérateurs comme + et $, ainsi que des fonctions mathématiques comme exp et sin. Les fonctions primitives incluent aussi des génériques S3; la liste complète des génériques S3 primitifs peut être obtenue avec .S3PrimitiveGenerics (docs).
Lorsque le générique S3 est primitif, son processus de recherche des méthodes fonctionne un peu différemment. R va chercher des méthodes selon la class (docs), comme à l'habitude, mais si rien n'est trouvé, la fonction interne en code C sera appelée. (À comparer aux génériques réguliers, où une erreur est émise si aucune méthode n'est trouvée.) Cela signifie que si vous remplacez la classe d'un objet, des comportements fondamentaux comme le calcul de la longueur ne seront pas brisés.
Cette activité fait partie du cours
Programmation orientée objet avec S3 et R6 en R
Instructions de l’exercice
Un objet de type liste, dont la classe a été remplacée par "hairstylist", a été assigné dans votre espace de travail à la variable hair.
- Affichez la structure de
hairavecstr()(docs). - Dressez la liste de tous les génériques S3 primitifs connus par R.
- Utilisez la fonction
exists()(docs) pour vérifier qu'aucune fonction nomméelength.hairstylistn'existe. Notez que cette fonction prend une entrée de type chaîne de caractères. - Calculez le
length()(docs) de la variablehair.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# View the structure of hair
___
# What primitive generics are available?
___
# Does length.hairstylist exist?
___
# What is the length of hair?
___