CommencezCommencez gratuitement

É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

Voir le cours

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 cat pour what_am_i().
    • Écrivez un message() (docs) indiquant "I'm a cat".
    • Appelez NextMethod() (docs) en passant le nom de la générique comme chaîne.
  • Définissez une méthode mammal pour what_am_i().
    • Les arguments sont les mêmes que pour la méthode cat.
    • Écrivez un message() indiquant "I'm a mammal".
    • Appelez NextMethod().
  • Définissez une méthode character pour what_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().
  • Appelez what_am_i() avec kitty comme 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()
___
Modifier et exécuter le code