Die nächste Methode schreiben
Wenn Objekte mehrere Klassen haben, möchtest du möglicherweise Methoden für mehrere dieser Klassen aufrufen. Das geschieht mit NextMethod() (Docs).
S3-Methoden nehmen dann die folgende Form an:
an_s3_method.some_class <- function(x, ...)
{
# Auf some_class reagieren, dann
NextMethod("an_s3_method")
}
Das heißt, NextMethod() sollte die letzte Zeile der Methode sein.
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung mit S3 und R6 in R
Anleitung zur Übung
Die Variable kitty und die generische Funktion what_am_i() sind in deinem Workspace vordefiniert.
- Inspiziere deinen Workspace mit
ls.str(). - Vervollständige die Definition der
cat-Methode fürwhat_am_i(). - Definiere eine
mammal-Methode fürwhat_am_i().- Die Argumente sind dieselben wie bei der
cat-Methode. - Schreibe eine
message()mit dem Text"I'm a mammal". - Rufe
NextMethod()auf.
- Die Argumente sind dieselben wie bei der
- Definiere eine
character-Methode fürwhat_am_i().- Die Argumente sind dieselben wie bei der
cat-Methode. - Schreibe eine
message()mit dem Text"I'm a character vector". - Rufe
NextMethod()NICHT auf.
- Die Argumente sind dieselben wie bei der
- Rufe
what_am_i()mitkittyals Eingabe auf und prüfe, dass alle drei Meldungen angezeigt werden.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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()
___