BaşlayınÜcretsiz başlayın

İsimde Ne Var?

S3 katı bir adlandırma kuralı kullanır: tüm S3 metotlarının adı generic.class biçimindedir.

Tersi doğru değildir: bir fonksiyon, S3 metodu olmadan da nokta içeren bir ada sahip olabilir. Bu, S dilinin ilk dönemlerinden beri var olan birçok fonksiyon için geçerlidir. Örneğin, all.equal() (doküman) aslında bir S3 jeneriğidir, metod değil. (Bu, leopard.case kullanımının nasıl kafa karıştırabileceğine bir örnek.)

Bir fonksiyonun S3 jeneriği olup olmadığını pryr paketindeki is_s3_generic() (doküman) fonksiyonunu çağırarak kontrol edebilirsin. Ayrıca fonksiyonu yazdırabilir (konsola adını yazarak) ve UseMethod() çağırıp çağırmadığına bakabilirsin.

Benzer şekilde, bir fonksiyonun S3 metodu olup olmadığını pryr paketindeki is_s3_method() (doküman) çağrısıyla kontrol edebilirsin. Örneğin,

library(pryr)
is_s3_generic("t")           # generic transpose function
is_s3_method("t.data.frame") # transpose method for data.frames
is_s3_method("t.test")       # a function for Student's t-tests 

Hangileri doğrudur?

  1. is.complex() (doküman), complex nesnelerinde çalışan is jeneriğinin bir metodudur.
  2. seq.Date() (doküman), Date nesnelerinde çalışan seq jeneriğinin bir metodudur.
  3. is.na.data.frame() (doküman), data.frame nesnelerinde çalışan is.na jeneriğinin bir metodudur.
  4. sort() (doküman) jenerik bir fonksiyondur.
  5. order() (doküman) jenerik bir fonksiyondur.

Bu egzersiz, kursun bir parçasıdır

R'de S3 ve R6 ile Nesne Yönelimli Programlama

Kursa Göz Atın

Uygulamalı etkileşimli egzersiz

Teoriyi etkileşime dönüştürün, interaktif egzersizlerimizden biriyle

Egzersize başla