我想「傳遞」兩個其他引用類對象(如兩個足球之間的引用類對象[足球]玩家)用下面的例子:在兩個其他引用類對象之間傳遞引用類對象(足球示例)
# create Reference classes
b <- setRefClass('Ball', fields = list(size = 'numeric'))
p <- setRefClass('Player', fields = list(name = 'character', possession = 'Ball'),
methods = list(pass = function(){
tmp <- possession$copy()
possession <<- NULL
return(tmp)
}, receive = function(newBall){
possession <<- newBall
}
))
# initialize pretend all-star team
# p1 gets initial possession of a new ball
p1 <- p$new(name = 'Ronaldinho', possession = b$new(size=5))
p2 <- p$new(name = 'Beckham')
# now pass the ball from p1 to p2
p2$receive(p1$pass())
不過,我得到以下錯誤:
Error in function (value) :
invalid replacement for field ‘possession’, should be from class 「Ball」 or a subclass (was class 「NULL」)
理論上我想retutn球對象的引用,然後添加引用另一名球員,但顯然這是行不通的。我知道可以通過直接訪問字段來獲得相同的結果,但是我想找到一種方法來僅使用類的內部方法來完成此「傳遞」。這可能嗎?爲什麼我得到這個錯誤?
請編輯您的問題。 S3,S4或Reference Classes的作者都不是像你在這裏用於後者的術語。這個詞已經足夠傳播了,讓我們阻止它。他們被稱爲「參考類」。 – 2013-02-23 23:46:46
我不知道這些類的名稱存在爭議。我從以下非常有用的介紹中推導出這個術語:[hadley's R5 wiki](https://github.com/hadley/devtools/wiki/R5)。如果這不是正確的術語,很樂意改變它。 – 2013-02-23 23:48:31
我一直在倚靠哈德利,並沒有進一步宣傳這個術語。他開始走了。 – 2013-02-23 23:49:29