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)

读者可以参考 完整描述这一机制的正式文档。