Previous: Customizing the environment, Up: Writing your own functions



10.9 類,泛型函數和面向物件

一個物件的類決定了它會如何被一個 泛型函數處理。相反,一個泛型函數 通過參數類的特異參數來完成特定工作或者事務的。 如果參數缺乏任何類屬性, 或者在該問題中有一個不能被任何泛型函數處理的類, 泛型函數會有一種默認的處理方式

下面的一個例子使這個問題清晰。類機制為用戶提供了為特定問題設計和編寫 泛型函數的便利。 在其他泛型函數中,plot() 用於圖形化顯示 物件,summary() 用於各種類型的概述分析, 以及 anova() 用於比較 統計模型。

能以特定方式處理類的泛型函數的數目非常的龐大。 例如,可以在非常時髦的類物件 "data.frame" 中使用的函數有

     [     [[<-    any    as.matrix
     [<-   mean    plot   summary

可以用函數 methods() 得到當前對某個類物件 可用的泛型函數列表:

     > methods(class="data.frame")

相反,一個泛型函數可以處理的類同樣很多。 例如,plot() 有默認的方法和變數 處理物件類 "data.frame""density""factor",等等。一個完整的列表同樣可以通過 函數 methods() 得到:

     > methods(plot)

讀者可以參考 完整描述這一機制的正式文檔。