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
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
catpentruwhat_am_i(). - Definește o metodă
mammalpentruwhat_am_i().- Argumentele sunt aceleași ca pentru metoda
cat. - Scrie un
message()care să afișeze"I'm a mammal". - Apelează
NextMethod().
- Argumentele sunt aceleași ca pentru metoda
- Definește o metodă
characterpentruwhat_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().
- Argumentele sunt aceleași ca pentru metoda
- Apelează
what_am_i()cukittyca 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()
___