Vytvoření S3 metody (2)
Pokud pro generickou funkci není nalezena žádná vhodná metoda, vyhodí se chyba. Například v tuto chvíli má get_n_elements() dostupnou metodu pouze pro data.frame. Pokud místo toho předáš get_n_elements() matici, zobrazí se chyba.
> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"
Místo psaní desítek metod pro každý možný typ vstupu můžeš vytvořit metodu, která zvládne všechny typy bez vlastní specifické metody. Říká se jí výchozí metoda a vždy nese název ve tvaru generic.default. Například print.default() (docs) vypíše libovolný typ objektu, který nemá vlastní metodu print() (docs).
Toto cvičení je součástí kurzu
Objektově orientované programování s S3 a R6 v R
Pokyny k cvičení
Generická funkce get_n_elements() a metoda pro data.frame jsou již definovány v tvém pracovním prostředí.
- Pomocí
ls.str()(docs) prozkoumej své pracovní prostředí. - Napiš výchozí S3 metodu pro
get_n_elements().- Název funkce by měl být složen z názvu generické funkce, tečky a slova
default. - Vstupní argumenty by měly být
xa.... - Tělo funkce by mělo tvořit jediný řádek vracející počet prvků libovolného objektu. Použij stejnou techniku jako u šachové hry v cvičení Make it Classy (1).
- Název funkce by měl být složen z názvu generické funkce, tečky a slova
- Zavolej svou metodu na datové sadě
ability.cov(docs) a výsledek ulož do proměnnén_elements_ability.cov.
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 predefined objects
___
# Create a default method for get_n_elements
___ <- ___
# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___