2014-09-01 59 views
0

我試圖記錄與roxygen2引用類方法:參考文件類以及它與roxygen2

結果的 ?myclass
#' test class 
#' 
#' @name myclass 
#' @export 
#' @field x A number 
#' @field y A number 
#' @method print Print x and y 
myclass = setRefClass("myclass", 
         fields = list(
          x = "numeric", 
          y = "numeric" 
        )) 


myclass$methods(
    print = function() { 
     if (.self$x > 10) { 
      stop("x is too large!") 
     } 
     message(paste("x: ", .self$x)) 
     message(paste("y: ", .self$y)) 
    } 
) 

myclass$methods(
    initialize = function(x=NULL, y=NULL, obj=NULL) { 
     if(is.null(obj)) { 
      .self$x = x 
      .self$y = y 
     } 
     else { 
      .self$x = obj$x 
      .self$y = obj$y 
     } 
    } 
) 

test class 

Description 

test class 

Fields 

x 
A number 

y 
A number 

我有4個問題:

  • @name是什麼意思?
  • 爲什麼@methods指令在這裏沒有效果?
  • @export@exportClass有什麼區別?
  • 如何記錄方法的參數?

我也試過這樣:

myclass$methods(
#' Print two numbers 
#' 
#' @param msg A message to prepend 
    print = function(msg) { 
     if (.self$x > 10) { 
      stop("x is too large!") 
     } 
     message(paste(msg, .self$x)) 
     message(paste(msg, .self$y)) 
    } 
) 

,並得到這樣的:

> ?myclass$print 
Error in .helpForCall(topicExpr, parent.frame()) : 
    no documentation for function ‘$’ and signature ‘x = "refObjectGenerator"’ 

闖闖:

#' test class 
#' 
#' @name myclass 
#' @export 
#' @field x A number 
#' @field y A number 
#' @method print Print two numbers 
#' @method initialize Initialize the class 
myclass = setRefClass("myclass", 
         fields = list(
          x = "numeric", 
          y = "numeric" 
        ), 
         methods = list(
          print = function(msg) { 
           if (.self$x > 10) { 
            stop("x is too large!") 
           } 
           message(paste(msg, .self$x)) 
           message(paste(msg, .self$y)) 
          }, 
          initialize = function(x=NULL, y=NULL, obj=NULL) { 
           if(is.null(obj)) { 
            .self$x = x 
            .self$y = y 
           } 
           else { 
            .self$x = obj$x 
            .self$y = obj$y 
           } 
          } 
        ) 
) 

仍然沒有運氣。

回答

0

在引用類的情況下,我非常確定@export將公開由setRefClass返回的生成器函數,而@exportClass將公開實際的類。