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

Connected

Cvičení

Psaní metody NextMethod

Pokud má objekt více tříd, může být užitečné zavolat metody pro několik z nich. K tomu slouží NextMethod() (dokumentace).

S3 metody pak mají tuto podobu:

an_s3_method.some_class <- function(x, ...)
{
  # Zpracuj some_class, pak
  NextMethod("an_s3_method")
}

Jinak řečeno, NextMethod() by měl být posledním řádkem metody.

Pokyny

100 XP

Proměnná kitty a generická funkce what_am_i() jsou v tvém workspace předem definované.

  • Prohlédni si workspace pomocí ls.str().
  • Dokonči definici metody cat pro what_am_i().
    • Pomocí message() (dokumentace) vypiš zprávu "I'm a cat".
    • Zavolej NextMethod() (dokumentace) a předej mu název generické funkce jako řetězec.
  • Definuj metodu mammal pro what_am_i().
    • Argumenty jsou stejné jako u metody cat.
    • Pomocí message() vypiš zprávu "I'm a mammal".
    • Zavolej NextMethod().
  • Definuj metodu character pro what_am_i().
    • Argumenty jsou stejné jako u metody cat.
    • Pomocí message() vypiš zprávu "I'm a character vector".
    • NextMethod() nevolej.
  • Zavolej what_am_i() s argumentem kitty a ověř, že se zobrazí všechny tři zprávy.