我经常在专业环境下使用 R 语言编程,我也为客户或同事编写软件包。这里的一些程序员有 Java 背景,并坚持使用 S4方法以面向对象的方式完成所有工作。另一方面,我的经验是,当试图让代码做您想让它做的事情时,S4实现常常表现得更差,并且会造成更多的麻烦。
我完全同意在某些情况下,您必须能够构造复杂的对象或者以受控的方式附加现有的对象。但是大多数时候,S4实现也可以很容易地使用经典列表来完成,而不必像定义标准泛型、方法、构造函数、初始化器等等那样麻烦。
您什么时候考虑为 R 编写 S4实现?
编辑: 为了清晰起见,我非常欣赏 R 中关于 OO 的答案和讨论,在 R 中可以通过多种方式进行 OOP 的讨论,但是我的问题实际上是针对具体使用 S4方法的附加值。