Začněte nyníZačněte zdarma

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.

Toto cvičení je součástí kurzu

Objektově orientované programování s S3 a R6 v R

Zobrazit kurz

Pokyny k cvičení

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.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Inspect your workspace
ls.str()

# cat method
what_am_i.cat <- function(x, ...)
{
  # Write a message
  ___
  # Call NextMethod
  ___
}

# mammal method
___ <- ___

# character method
___ <- ___

# Call what_am_i()
___
Upravit a spustit kód