【问题标题】:Dispatch of constructor in R (S3)在 R (S3) 中调度构造函数
【发布时间】:2015-09-23 09:07:36
【问题描述】:

从架构的角度来看,在 R(S3 系统)中调度构造函数可以吗?

我有一个 returns 类的构造函数,我想以如下方式调度它:returns.zooreturns.data.frame 等。

【问题讨论】:

    标签: r constructor dispatch


    【解决方案1】:

    只是我的意见,但我认为在这种情况下使用 as 前缀有(不成文的)约定。例如:as.data.frame 将各种对象强制转换为数据框。 与as.matrixas.Dateas.list 相同...

    通常一个“非as”函数调用通用as函数(例如data.frame函数调用as.data.frame)。

    还有一个很好的做法是实现一个带有is 前缀的函数。 例如:is.data.frameis.list

    有时并非如此。例如formula 是一个通用的“强制器” 而as.formula 不是。并且有很多组合练习的包。例如igraph 包含as.igraph 通用但使用from_data_frame 从数据框创建对象。

    所以我猜as.returns.zoo 看起来与现有做法一致,但 returns.zoo 也没有错。

    【讨论】:

    • 感谢您的回答。几个问题:is 前缀用于测试类是否为“something_after_dot”,对吗?所以,它与构造函数无关,它只是很好实现。我理解正确吗?我的构造函数不仅强制,而且在内部进行一些计算(计算价格回报率)。即使最好用前缀as命名它?
    • 是的,is 前缀是另一回事。我认为在构建、强制、转换和“计算某事”之间没有客观和明确的界限。有时你必须自己决定。如果您认为该函数除了构造或强制之外还做了其他事情,那么请找到正确的动词并适当地命名它。唯一的标准是用户能否快速了解它在做什么,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2011-12-07
    • 2019-03-14
    相关资源
    最近更新 更多