1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Objektově orientované programování s S3 a R6 v R

Connected

Cvičení

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).

Pokyny

100 XP

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 x a ....
    • 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).
  • Zavolej svou metodu na datové sadě ability.cov (docs) a výsledek ulož do proměnné n_elements_ability.cov.