1. Learn
  2. /
  3. Courses
  4. /
  5. Programowanie obiektowe z S3 i R6 w R

Connected

Exercise

Pisanie następnej metody

Gdy obiekty należą do wielu klas, możesz chcieć wywołać metody dla kilku z nich. Służy do tego NextMethod() (dokumentacja).

Metody S3 przyjmują teraz następującą postać:

an_s3_method.some_class <- function(x, ...)
{
  # Działaj na some_class, a następnie
  NextMethod("an_s3_method")
}

Inaczej mówiąc, NextMethod() powinno być ostatnią linią metody.

Instructions

100 XP

Zmienna kitty oraz funkcja generyczna what_am_i() zostały wcześniej zdefiniowane w twoim środowisku.

  • Sprawdź zawartość środowiska za pomocą ls.str().
  • Uzupełnij definicję metody cat dla what_am_i().
    • Napisz message() (dokumentacja) wyświetlający komunikat "I'm a cat".
    • Wywołaj NextMethod() (dokumentacja), przekazując nazwę funkcji generycznej jako ciąg znaków.
  • Zdefiniuj metodę mammal dla what_am_i().
    • Argumenty są takie same jak w metodzie cat.
    • Napisz message() wyświetlający komunikat "I'm a mammal".
    • Wywołaj NextMethod().
  • Zdefiniuj metodę character dla what_am_i().
    • Argumenty są takie same jak w metodzie cat.
    • Napisz message() wyświetlający komunikat "I'm a character vector".
    • Nie wywołuj NextMethod().
  • Wywołaj what_am_i() z kitty jako argumentem i sprawdź, czy wszystkie trzy komunikaty są wyświetlane.