oop - 在 R 编程中使用 S4 方法何时会带来返回

标签 oop r methods r-s4

我定期在专业环境中使用 R 进行编程,并且也为客户或同事编写程序包。这里的一些程序员有 Java 背景,坚持使用 S4 方法以面向对象的方式完成所有事情。另一方面,我的经验是,S4 实现通常性能较差,并且在尝试让代码执行您希望它执行的操作时会引起更多头痛。

我绝对同意,在某些情况下,您必须能够以受控方式构造复杂对象或附加现有对象。但大多数时候,S4 实现也可以使用经典列表轻松完成,而无需定义 standardGeneric、方法、构造函数、初始值设定项等麻烦。

您什么时候考虑为 R 编写 S4 实现?

编辑:为了清楚起见,我确实很欣赏 R 中关于 OO 的答案和讨论。OOP 可以在 R 中以多种方式完成,但我的问题实际上是针对专门使用 S4 方法的附加值。

最佳答案

我的经验和你的一致,所以我只使用S3。

澄清一下:S4 有一些巧妙的功能(例如,多个参数的分派(dispatch)和槽类型检查),但我还没有遇到过功能超过成本的情况。成本示例包括:任何插槽更改都需要完整的对象副本以及(可能更糟)对 S4 方法的持续更改。

简而言之,我喜欢 S4 背后的想法,但我会等待它成熟后再在我自己的代码中使用它。

关于oop - 在 R 编程中使用 S4 方法何时会带来返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3602154/

相关文章:

r - 在 Shiny 中搜索 Datatable 的多列

r - 如何使用 Stringr 检查向量是否包含 R 中的数字?

r - 将单行文件读取到fread或read.table中的R中

flutter - Dart 中的空安全

c# - 当只有一种资源(例如 Kinect 传感器)时,使用静态类/方法是一种好的做法吗

java - 在此示例中如何返回 Point

java - 我如何调用父类(super class)的重写方法?

java - 如何创建一个重复函数的方法?

oop - 状态模式和策略模式的区别

C#:public new string ToString() VS public override string ToString()