MulaiMulai sekarang secara gratis

Menulis Next Method

Ketika objek memiliki beberapa kelas, Anda mungkin ingin memanggil metode untuk beberapa kelas tersebut. Ini dilakukan menggunakan NextMethod() (docs).

Metode S3 sekarang berbentuk:

an_s3_method.some_class <- function(x, ...)
{
  # Bertindak pada some_class, lalu
  NextMethod("an_s3_method")
}

Artinya, NextMethod() sebaiknya menjadi baris terakhir dari metode.

Latihan ini adalah bagian dari kursus

Pemrograman Berorientasi Objek dengan S3 dan R6 di R

Lihat Kursus

Petunjuk latihan

Variabel kitty, dan fungsi generik what_am_i() telah didefinisikan sebelumnya di ruang kerja Anda.

  • Periksa ruang kerja Anda dengan ls.str().
  • Lengkapi definisi metode cat untuk what_am_i().
    • Tulis message() (docs) yang menyatakan "I'm a cat".
    • Panggil NextMethod() (docs), dengan meneruskan nama generiknya sebagai string.
  • Definisikan metode mammal untuk what_am_i().
    • Argumennya sama seperti pada metode cat.
    • Tulis message() yang menyatakan "I'm a mammal".
    • Panggil NextMethod().
  • Definisikan metode character untuk what_am_i().
    • Argumennya sama seperti pada metode cat.
    • Tulis message() yang menyatakan "I'm a character vector".
    • Jangan memanggil NextMethod().
  • Panggil what_am_i() dengan kitty sebagai masukan, dan pastikan ketiga pesan tersebut ditampilkan.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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()
___
Edit dan Jalankan Kode