我有一个R6类,我想S3为它添加一个方法.我发现的文档简要提到,为了使用你必须拥有的S3调度,我找不到应该怎么做的例子.R6class = TRUE
我确实在经验上看到只是简单地在表单中编写S3方法s3generic.r6class,但我想知道这是否确实以正确的方式编写S3方法R6.
例如,假设我有一个R6增强a 的类list
library(R6)
R6list <- R6Class(
"R6list",
public = list(
orig = NULL,
initialize = function(x) {
self$orig <- x
}
)
)
Run Code Online (Sandbox Code Playgroud)
问题1
当然,我想提供一种获取基础列表的方法,所以我想添加一个as.list方法.是否标准在类中添加S3泛型和as.list公共函数?我的直观答案是添加两者.
R6list <- R6Class(
"R6list",
public = list(
orig = NULL,
initialize = function(x) {
self$orig <- x
},
as.list = function() {
self$orig
}
)
)
as.list.R6list <- function(x, ...) {
x$as.list()
}
Run Code Online (Sandbox Code Playgroud)
所以现在,如果我有一个对象,mylist <- R6list$new(as.list(letters[1:5]))我可以打电话as.list(mylist)或mylist$as.list().是其中一个优先于另一个?
问题2为类
编写S3方法有什么特别之处R6,还是我上面写的足够和正确的方法?我不确定该S3方法是否必须在类定义之外编写,或者如果R6以某种方式提供了在其中编写S3方法的方法,以便所有与该类相关的代码都是本地化的.
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |