Escrevendo o próximo método
Quando objetos têm várias classes, você pode querer chamar métodos para várias dessas classes. Isso é feito usando NextMethod() (docs).
Os métodos S3 agora assumem a forma:
an_s3_method.some_class <- function(x, ...)
{
# Age sobre some_class e então
NextMethod("an_s3_method")
}
Ou seja, NextMethod() deve ser a última linha do método.
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
Instruções do exercicio
A variável kitty e a função genérica what_am_i() já foram definidas no seu workspace.
- Inspecione seu workspace com
ls.str(). - Complete a definição do método
catparawhat_am_i(). - Defina um método
mammalparawhat_am_i().- Os argumentos são os mesmos do método
cat. - Escreva um
message()dizendo"I'm a mammal". - Chame
NextMethod().
- Os argumentos são os mesmos do método
- Defina um método
characterparawhat_am_i().- Os argumentos são os mesmos do método
cat. - Escreva um
message()dizendo"I'm a character vector". - Não chame
NextMethod().
- Os argumentos são os mesmos do método
- Chame
what_am_i()comkittycomo entrada, verificando que todas as três mensagens são exibidas.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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()
___