1. Learn
  2. /
  3. Cursuri
  4. /
  5. Programare orientată pe obiecte cu S3 și R6 în R

Connected

exercițiu

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.

Instrucțiuni

100 XP

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.