R5で参照渡しができるようになったようだ。
setGeneric("bonus", function(object, add = 100) standardGeneric("bonus"))
Counter1 <- setRefClass("Counter1", fields = list(ct = "numeric", remark = "character"))
Counter1$methods(initialize = function(){
.self$ct <- 10
.self$remark <- "This is a simple counter."
})
Counter1$methods(count = function(add = 1){
.self$ct <- .self$ct + add
})
setMethod("bonus", "Counter1",
function(object, add){
object$ct <- object$ct + add
}
)
setMethod("show", "Counter1",
function(object){
cat(paste("Here, ", object$ct, "\n", sep = ""))
}
)
counter1 <- Counter1$new()
counter1$count(3)
bonus(counter1)
bonus(counter1, 5)
counter2 <- Counter1$new()