Escribir el método Next
Cuando los objetos tienen varias clases, quizá quieras llamar a métodos para varias de esas clases. Esto se hace con NextMethod() (docs).
Los métodos S3 ahora tienen la forma:
an_s3_method.some_class <- function(x, ...)
{
# Actuar sobre some_class y luego
NextMethod("an_s3_method")
}
Es decir, NextMethod() debe ser la última línea del método.
Este ejercicio forma parte del curso
Programación orientada a objetos con S3 y R6 en R
Instrucciones del ejercicio
La variable kitty y la función genérica what_am_i() ya están predefinidas en tu espacio de trabajo.
- Inspecciona tu espacio de trabajo con
ls.str(). - Completa la definición del método
catparawhat_am_i(). - Define un método
mammalparawhat_am_i().- Los argumentos son los mismos que para el método
cat. - Escribe un
message()que diga"I'm a mammal". - Llama a
NextMethod().
- Los argumentos son los mismos que para el método
- Define un método
characterparawhat_am_i().- Los argumentos son los mismos que para el método
cat. - Escribe un
message()que diga"I'm a character vector". - No llames a
NextMethod().
- Los argumentos son los mismos que para el método
- Llama a
what_am_i()conkittycomo entrada y verifica que se muestran los tres mensajes.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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()
___