Čím více tříd, tím lépe
Proměnné mohou mít více než jednu třídu. V takovém případě class() (docs) vrací znakový vektor délky větší než jedna.
Více tříd nastavíš tak, že funkci class() přiřadíš znakový vektor. Třídy by měly být seřazeny od nejspecifičtější po nejobecnější (zleva doprava), protože chceš začít chováním, které je pro daný objekt nejpřesnější. Například:
x <- c("a", "e", "i", "o", "u")
class(x) <- c("vowels", "letters", "character")
Příslušnost k ostatním třídám ověříš pomocí univerzální funkce inherits() (docs). Například:
inherits(x, "vowels")
Toto cvičení je součástí kurzu
Objektově orientované programování s S3 a R6 v R
Pokyny k cvičení
Proměnná kitty je v tvém pracovním prostředí již připravena.
- Zobraz proměnnou
kittyzadáním jejího názvu. - Přiřaď proměnné
kittytřídy"cat","mammal"a"character". - Pomocí
inherits()zkontroluj, žekittymá třídu"cat","mammal"a"character"(každou zvlášť, v tomto pořadí). - Pomocí
is.character()ověř, žekittyje stále znakový vektor. - Zkontroluj, že
kittynemá třídu"dog".
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# View the kitty
kitty
# Assign classes
___ <- ___
# Does kitty inherit from cat/mammal/character?
inherits(___, "___")
___
___
# Is kitty a character vector?
___
# Does kitty inherit from dog?
___