Muito elegante
Variáveis podem ter mais de uma classe. Nesse caso, class() (docs) retorna um vetor de caracteres com comprimento maior que um.
Da mesma forma, você pode definir múltiplas classes atribuindo um vetor de caracteres a class(). As classes devem ser ordenadas da mais específica para a mais geral, da esquerda para a direita, já que você quer começar pelo comportamento mais direcionado ao seu objeto. Por exemplo:
x <- c("a", "e", "i", "o", "u")
class(x) <- c("vowels", "letters", "character")
Você pode verificar as outras classes usando a função genérica inherits() (docs). Por exemplo:
inherits(x, "vowels")
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 já foi pré-definida no seu ambiente de trabalho.
- Visualize
kittydigitando seu nome. - Atribua as classes
"cat","mammal"e"character"à variávelkitty. - Verifique que
kittytem as classes"cat","mammal","character"(uma de cada vez, nessa ordem) usandoinherits(). - Verifique que
kittyainda é um vetor de caracteres usandois.character(). - Verifique que
kittynão tem a classe"dog".
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# View the kitty
kitty
# Assign classes
___ <- ___
# Does kitty inherit from cat/mammal/character?
inherits(___, "___")
___
___
# Is kitty a character vector?
___
# Does kitty inherit from dog?
___