Next Method'u Yazmak
Nesnelerin birden fazla sınıfı olduğunda, bu sınıfların birkaçına ait yöntemleri çağırmak isteyebilirsin. Bu, NextMethod() (docs) kullanılarak yapılır.
S3 yöntemleri artık şu biçimdedir:
an_s3_method.some_class <- function(x, ...)
{
# some_class üzerinde işlem yap, sonra
NextMethod("an_s3_method")
}
Yani, yöntemin son satırı NextMethod() olmalıdır.
Bu egzersiz, kursun bir parçasıdır
R'de S3 ve R6 ile Nesne Yönelimli Programlama
Egzersiz talimatları
kitty değişkeni ve what_am_i() genel (generic) işlevi çalışma alanında önceden tanımlandı.
- Çalışma alanını
ls.str()ile incele. what_am_i()içincatyönteminin tanımını tamamla.what_am_i()için birmammalyöntemi tanımla.- Argümanlar
catyöntemiyle aynıdır. "I'm a mammal"diyen birmessage()yaz.NextMethod()çağır.
- Argümanlar
what_am_i()için bircharacteryöntemi tanımla.- Argümanlar
catyöntemiyle aynıdır. "I'm a character vector"diyen birmessage()yaz.NextMethod()çağırma.
- Argümanlar
- Tüm üç iletinin gösterildiğini doğrulamak için
what_am_i()işlevinikittyile çağır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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()
___