EmpezarEmpieza gratis

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

Ver curso

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 cat para what_am_i().
    • Escribe un message() (docs) que diga "I'm a cat".
    • Llama a NextMethod() (docs), pasando el nombre de la genérica como una cadena.
  • Define un método mammal para what_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().
  • Define un método character para what_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().
  • Llama a what_am_i() con kitty como 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()
___
Editar y ejecutar código