İ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?
is.complex()(doküman),complexnesnelerinde çalışanisjeneriğinin bir metodudur.seq.Date()(doküman),Datenesnelerinde çalışanseqjeneriğinin bir metodudur.is.na.data.frame()(doküman),data.framenesnelerinde çalışanis.najeneriğinin bir metodudur.sort()(doküman) jenerik bir fonksiyondur.order()(doküman) jenerik bir fonksiyondur.
Bu egzersiz, kursun bir parçasıdır
R'de S3 ve R6 ile Nesne Yönelimli Programlama
Uygulamalı etkileşimli egzersiz
Teoriyi etkileşime dönüştürün, interaktif egzersizlerimizden biriyle
Egzersize başla