Scrivere il metodo Next
Quando gli oggetti hanno più classi, potresti voler chiamare i metodi per diverse di queste classi. Questo si fa usando NextMethod() (docs).
I metodi S3 ora hanno la forma:
an_s3_method.some_class <- function(x, ...)
{
# Agisci su some_class, poi
NextMethod("an_s3_method")
}
Cioè, NextMethod() dovrebbe essere l’ultima riga del metodo.
Questo esercizio fa parte del corso
Programmazione orientata agli oggetti con S3 e R6 in R
Istruzioni dell'esercizio
La variabile kitty e la funzione generica what_am_i() sono già definite nel tuo workspace.
- Esplora il tuo workspace con
ls.str(). - Completa la definizione del metodo
catperwhat_am_i(). - Definisci un metodo
mammalperwhat_am_i().- Gli argomenti sono gli stessi del metodo
cat. - Scrivi un
message()con"I'm a mammal". - Chiama
NextMethod().
- Gli argomenti sono gli stessi del metodo
- Definisci un metodo
characterperwhat_am_i().- Gli argomenti sono gli stessi del metodo
cat. - Scrivi un
message()con"I'm a character vector". - Non chiamare
NextMethod().
- Gli argomenti sono gli stessi del metodo
- Chiama
what_am_i()conkittycome input, verificando che vengano mostrati tutti e tre i messaggi.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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()
___