5 面向对象编程
5.1 小知识点
is.object()
检查一个对象是不是纯基础类型,如果返回值为FALSE
则是使用
methods()
查看属于一个泛型函数的所有方法还可以找出对某一个类型有定义方法的所有泛型函数(原文:We can also list all generics that have a method for a given class)
methods(class = "ts")
S3泛型函数的任务就是调用正确的S3方法
在R基础包中没有一个简单的方法可以检查一个对象是不是S3对象,可以使用最接近的方法:
is.object() & !isS4()
,或pryr::otype()
可以使用
pryr::ftype()
检查一个对象是S3方法还是S3泛函S3没有正式的类定义,为给一个类创建一个对象,只需使用已有的基础对象并设置类属性,例:
foo <- structure(list(), class = "foo")
可以使用inherits(x, "class name")
检查一个对象是否继承于一个特殊类新建一个泛型函数
在S3和S4中方法属于函数(即方法是从函数中查找的),而在RC(参考类:Reference Class)中方法属于类