CommencerCommencer gratuitement

É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

Afficher le cours

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 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 sous forme de 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 en 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()
___
Modifier et exécuter le code