Écrire la méthode Next
Lorsque les objets ont plusieurs classes, vous pouvez vouloir appeler les méthodes de plusieurs de ces classes. Cela se fait avec NextMethod() (docs).
Les méthodes S3 prennent désormais la forme :
an_s3_method.some_class <- function(x, ...)
{
# Agir sur some_class, puis
NextMethod("an_s3_method")
}
Autrement dit, NextMethod() doit être la dernière ligne de la méthode.
Cet exercice fait partie du cours
Programmation orientée objet avec S3 et R6 en R
Instructions
La variable kitty et la fonction générique what_am_i() ont été préconfigurées 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()aveckittyen entrée et vérifiez que les trois messages s’affichent.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()
___