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
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
catuntukwhat_am_i(). - Definisikan metode
mammaluntukwhat_am_i().- Argumennya sama seperti pada metode
cat. - Tulis
message()yang menyatakan"I'm a mammal". - Panggil
NextMethod().
- Argumennya sama seperti pada metode
- Definisikan metode
characteruntukwhat_am_i().- Argumennya sama seperti pada metode
cat. - Tulis
message()yang menyatakan"I'm a character vector". - Jangan memanggil
NextMethod().
- Argumennya sama seperti pada metode
- Panggil
what_am_i()dengankittysebagai 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()
___