Skriva nästa metod
När objekt har flera klasser kan du vilja anropa metoder för flera av dessa klasser. Det görs med NextMethod() (docs).
S3-metoderna har nu följande form:
an_s3_method.some_class <- function(x, ...)
{
# Agera på some_class, sedan
NextMethod("an_s3_method")
}
Det vill säga att NextMethod() ska vara metodens sista rad.
Den här övningen är en del av kursen
Objektorienterad programmering med S3 och R6 i R
Övningsinstruktioner
Variabeln kitty och den generiska funktionen what_am_i() är fördefinierade i din arbetsyta.
- Granska din arbetsyta med
ls.str(). - Slutför definitionen av metoden
catförwhat_am_i(). - Definiera en metod
mammalförwhat_am_i().- Argumenten är desamma som för metoden
cat. - Skriv ett
message()med texten"I'm a mammal". - Anropa
NextMethod().
- Argumenten är desamma som för metoden
- Definiera en metod
characterförwhat_am_i().- Argumenten är desamma som för metoden
cat. - Skriv ett
message()med texten"I'm a character vector". - Anropa inte
NextMethod().
- Argumenten är desamma som för metoden
- Anropa
what_am_i()medkittysom indata och verifiera att alla tre meddelanden visas.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()
___