ÎncepețiÎncepe gratuit

Scrierea metodei Next

Când obiectele au mai multe clase, s-ar putea să dorești să apelezi metode pentru mai multe dintre aceste clase. Acest lucru se face folosind NextMethod() (docs).

Metodele S3 au acum următoarea formă:

an_s3_method.some_class <- function(x, ...)
{
  # Acționează asupra some_class, apoi
  NextMethod("an_s3_method")
}

Așadar, NextMethod() trebuie să fie ultima linie a metodei.

Acest exercițiu face parte din cursul

Programare orientată pe obiecte cu S3 și R6 în R

Vezi cursul

Instrucțiuni pentru exercițiu

Variabila kitty și funcția generică what_am_i() au fost predefinite în spațiul tău de lucru.

  • Inspectează spațiul de lucru cu ls.str().
  • Completează definiția metodei cat pentru what_am_i().
    • Scrie un message() (docs) care să afișeze "I'm a cat".
    • Apelează NextMethod() (docs), transmițând numele genericei ca șir de caractere.
  • Definește o metodă mammal pentru what_am_i().
    • Argumentele sunt aceleași ca pentru metoda cat.
    • Scrie un message() care să afișeze "I'm a mammal".
    • Apelează NextMethod().
  • Definește o metodă character pentru what_am_i().
    • Argumentele sunt aceleași ca pentru metoda cat.
    • Scrie un message() care să afișeze "I'm a character vector".
    • Nu apela NextMethod().
  • Apelează what_am_i() cu kitty ca argument, verificând că toate cele trei mesaje sunt afișate.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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()
___
Editează și rulează codul