LoslegenKostenlos loslegen

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

Kurs anzeigen

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ür what_am_i().
    • Schreibe eine message() (Docs) mit dem Text "I'm a cat".
    • Rufe NextMethod() (Docs) auf und übergib den Namen der generischen Funktion als String.
  • Definiere eine mammal-Methode für what_am_i().
    • Die Argumente sind dieselben wie bei der cat-Methode.
    • Schreibe eine message() mit dem Text "I'm a mammal".
    • Rufe NextMethod() auf.
  • Definiere eine character-Methode für what_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.
  • Rufe what_am_i() mit kitty als 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()
___
Code bearbeiten und ausführen