R言語ーごく簡単なR5によるオブジェクト指向

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()