2011-04-22 54 views
5

我想知道在R5參考類中定義類方法和類變量的正確方法。在R5參考類中定義類方法和類變量

下面是一個例子:

> # 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" 

XX$cc <- "cc"的行爲如同cc是XX的類變量,但我不知道這是否是一個正確的做法。
例如,XX $ def < - 「hoge」可以打破XX類發電機。

所以,我想知道是否有一個標準的方法來定義類變量和方法。

在此先感謝。

+0

我不認爲在引用對象框架中存在等價的類方法/變量。 – hadley 2011-04-22 13:28:37

+0

@hadley謝謝。那麼,你認爲有什麼理由不在R5類中實現類方法/變量嗎? – kohske 2011-04-22 14:10:53

+0

我只是不認爲他們有任何作用。你能提供一個你需要什麼類變量/方法的例子嗎? – hadley 2011-04-22 15:56:39

回答