Dears, I have a question about copying reference objects using the initialize method.
1) If the latter has no arguments, there is no problem to copy an object. myClass = setRefClass("myClass", fields = list(value = "numeric") ) myClass$methods(initialize = function(...){ value <<- 1 callSuper(...) }) newObject = myClass$new() newObject$value = 2 copyObject = newObject$copy() copyObject$value = 3 print(newObject$value) print(copyObject$value) 2) However, if the initialize method has arguments, I get an error: myClass = setRefClass("myClass", fields = list(value = "numeric") ) myClass$methods(initialize = function(extValue, ...){ value <<- extValue callSuper(...) }) newObject = myClass$new(extValue = 2) copyObject = newObject$copy() Error in .Object$initialize(...) : argument "extValue" is missing, with no default I understand that copy() first builds another instance of the object and then copies the fields. But it calls new without arguments... 3) One solution would be the initialize values by default myClass = setRefClass("myClass", fields = list(value = "numeric") ) myClass$methods(initialize = function(extValue = 1, ...){ value <<- extValue callSuper(...) }) newObject = myClass$new(extValue = 2) copyObject = newObject$copy() But I have a long list of arguments, so this way would be a little uncomfortable. On the other hand, I've been told that in OOP, the idea of the initialise method is to use the minimum information to build the oject. So passing a long list of arguments is not a good idea. 4) Another option is to first build the object and then set the parameters myClass = setRefClass("myClass", fields = list(value = "numeric") ) myClass$methods(setPar = function(extValue = 1, ...){ value <<- extValue return() }) newObject = myClass$new() newObject$setPar(extValue = 2) copyObject = newObject$copy() It works fine. Anyway I am curious to know if there is any way to use the initialize method with arguments that is not a problem with copy(). Thank! Aleix Ruiz de Villa ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel