Quiero saber la forma correcta de definir los métodos de clase y la variable de clase en la clase de referencia R5.define los métodos de clase y las variables de clase en la clase de referencia R5
Aquí se muestra un ejemplo:
> # define R5 class XX
> # member variable: ma
> # member method: mfa
> XX <- setRefClass("XX",
+ fields = list(ma = "character"),
+ methods = list(
+ mfa = function() return(paste(ma, "*"))
+ ))
>
> XX
Generator object for class "XX":
Class fields:
Name: ma
Class: character
Class Methods:
"callSuper", "copy", "export", "field", "getClass", "getRefClass", "import", "initFields",
"mfa"
Reference Superclasses:
"envRefClass"
> # create an instance of XX
> x <- XX$new(ma="ma")
>
> # call member method refering to the member variable.
> x$mfa()
[1] "ma *"
>
> # here, I define *class* variable
> XX$cc <- "cc"
> # contents of XX
> ls(XX)
[1] "cc" "className" "def" "methods" "new"
> # here, I define member method referring to the class var.
> XX$methods(mfc = function() {
+ return(XX$cc)
+ })
> # it does work.
> x$mfc()
[1] "cc"
Los XX$cc <- "cc"
se comporta como si el cc
es variable de clase del XX, pero no estoy seguro de si se trata de una forma correcta.
Por ejemplo, XX $ def < - "hoge" puede romper el generador de clase XX.
Por lo tanto, quiero saber si existe una forma estándar de definir la variable de clase y los métodos.
Gracias de antemano.
No creo que haya un equivalente de métodos/variables de clase en el marco de objetos de referencia. – hadley
@hadley gracias. entonces, ¿crees que hay alguna razón para no implementar métodos/variables de clase en la clase R5? – kohske
Simplemente no creo que tengan ningún rol. ¿Puedes dar un ejemplo de para qué necesitas las variables/métodos de clase? – hadley