我为S4类(编程语言R)定义了一个成员函数,它应该将元素添加到列表中,但它什么都不做:
setClass("ListHolder",
representation(
.list = "list"
),
prototype(
.list = list()
))
setGeneric("add",
function(this,i) standardGeneric("add")
)
setMethod("add",
signature(this="ListHolder",i="numeric"),
definition = function(this,i){
k <- length(this@.list)
this@.list[[k+1]] <- i
})
testListHolder <- function(){
lh <- new("ListHolder")
for(i in 1:10) add(lh,i)
print(lh@.list)
}
testListHolder()
这将打印一个空列表。这是怎么回事?
答案 0 :(得分:1)
添加功能是问题所在:您要做的是将对象__str__
传递给函数并对其进行修改, R 不支持。
所以,在上面的代码中:
ListHolder
语句。return(this)
,lh
编辑:还检查this(使用函数修改对象)问题