Rei*_*son 60
S3只能调度它的第一个参数,而S4可以调度多个参数.如果你希望能够写一个函数的方法foo,如果给定类的一个对象,它应该做不同的事情"bar"或定类的对象"bar" 和 "foobar",或定类的对象"barfoo"和"foobar",然后S4提供了一个更好的方式来处理这种复杂性.
S3非常简单且易于实现,但实际上并不是一个正式的面向对象系统.这种简单性是以强制属于类的对象具有正确的组件/插槽等为代价的.使用S3我可以做类似的事情class(obj) <- "lm",方法调度将"lm"在传递时使用类的方法obj,但不能保证obj真的是一个阶级的对象"lm".
S3易于实现,文档并且需要程序员更少的额外知识.
使用哪种只能是你可以决定的.例如,Doug Bates(2003)曾说过,对于新项目,他会使用S4而不是S3.我还没有必要使用除S3方法之外的任何东西.
所以我会坐下来思考你想要对这些类进行操作的各种类和方法.考虑一下您想要的功能,这可能会指向一个系统或另一个系统.
道格拉斯贝茨.将包转换为S4.R News,3(1):6-8,2003年6月
| 归档时间: |
|
| 查看次数: |
22980 次 |
| 最近记录: |