Comece agoraComece grátis

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

Ver curso

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 cat para what_am_i().
    • Escreva um message() (docs) dizendo "I'm a cat".
    • Chame NextMethod() (docs), passando o nome da genérica como string.
  • Defina um método mammal para what_am_i().
    • Os argumentos são os mesmos do método cat.
    • Escreva um message() dizendo "I'm a mammal".
    • Chame NextMethod().
  • Defina um método character para what_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().
  • Chame what_am_i() com kitty como 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()
___
Editar e Executar Código