Écrire la méthode Next
Quand des objets ont plusieurs classes, vous pouvez vouloir appeler des méthodes pour plusieurs de ces classes. On le fait avec NextMethod() (docs).
Les méthodes S3 prennent maintenant la forme suivante :
an_s3_method.some_class <- function(x, ...)
{
# Agir sur some_class, puis
NextMethod("an_s3_method")
}
Autrement dit, NextMethod() devrait être la dernière ligne de la méthode.
Cette activité fait partie du cours
Programmation orientée objet avec S3 et R6 en R
Instructions de l’exercice
La variable kitty et la fonction générique what_am_i() ont été préalablement définies dans votre espace de travail.
- Inspectez votre espace de travail avec
ls.str(). - Complétez la définition de la méthode
catpourwhat_am_i(). - Définissez une méthode
mammalpourwhat_am_i().- Les arguments sont les mêmes que pour la méthode
cat. - Écrivez un
message()indiquant "I'm a mammal". - Appelez
NextMethod().
- Les arguments sont les mêmes que pour la méthode
- Définissez une méthode
characterpourwhat_am_i().- Les arguments sont les mêmes que pour la méthode
cat. - Écrivez un
message()indiquant "I'm a character vector". - N'appelez PAS
NextMethod().
- Les arguments sont les mêmes que pour la méthode
- Appelez
what_am_i()aveckittycomme entrée et vérifiez que les trois messages s'affichent.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Inspect your workspace
ls.str()
# cat method
what_am_i.cat <- function(x, ...)
{
# Write a message
___
# Call NextMethod
___
}
# mammal method
___ <- ___
# character method
___ <- ___
# Call what_am_i()
___