【发布时间】:2015-09-23 09:07:36
【问题描述】:
从架构的角度来看,在 R(S3 系统)中调度构造函数可以吗?
我有一个 returns 类的构造函数,我想以如下方式调度它:returns.zoo、returns.data.frame 等。
【问题讨论】:
标签: r constructor dispatch
从架构的角度来看,在 R(S3 系统)中调度构造函数可以吗?
我有一个 returns 类的构造函数,我想以如下方式调度它:returns.zoo、returns.data.frame 等。
【问题讨论】:
标签: r constructor dispatch
只是我的意见,但我认为在这种情况下使用 as 前缀有(不成文的)约定。例如:as.data.frame 将各种对象强制转换为数据框。
与as.matrix、as.Date 和as.list 相同...
通常一个“非as”函数调用通用as函数(例如data.frame函数调用as.data.frame)。
还有一个很好的做法是实现一个带有is 前缀的函数。
例如:is.data.frame、is.list。
但有时并非如此。例如formula 是一个通用的“强制器”
而as.formula 不是。并且有很多组合练习的包。例如igraph 包含as.igraph 通用但使用from_data_frame 从数据框创建对象。
所以我猜as.returns.zoo 看起来与现有做法一致,但
returns.zoo 也没有错。
【讨论】:
is 前缀用于测试类是否为“something_after_dot”,对吗?所以,它与构造函数无关,它只是很好实现。我理解正确吗?我的构造函数不仅强制,而且在内部进行一些计算(计算价格回报率)。即使最好用前缀as命名它?