R RefClass使用包含使用停止条件初始化/避免调用初始化的字段

R RefClass使用包含使用停止条件初始化/避免调用初始化的字段,r,oop,R,Oop,可能我只是不了解refclass是如何工作的,但是有没有一种方法可以在构造函数/初始化方法中初始化类中的字段,而不是在之前?请参见下面的示例,其中当我尝试构建时,会出现错误: .Object$initialize(…)中出错:必须提供a或b A我们可以删除“s4”标签吗?RefClass与S4不同。我删除了标签,但这个问题的答案仍然很好…对不起,我帮不了你。。。我对S4了解很多,但对REF课程了解相对较少!(你也许可以在上面加上“ref”或“reference”标签,它可能会被合适的人看到。R6

可能我只是不了解refclass是如何工作的,但是有没有一种方法可以在构造函数/初始化方法中初始化类中的字段,而不是在之前?请参见下面的示例,其中当我尝试构建时,会出现错误:

.Object$initialize(…)中出错:必须提供a或b


A我们可以删除“s4”标签吗?RefClass与S4不同。我删除了标签,但这个问题的答案仍然很好…对不起,我帮不了你。。。我对S4了解很多,但对REF课程了解相对较少!(你也许可以在上面加上“ref”或“reference”标签,它可能会被合适的人看到。R6也是一个非常类似的系统,因此如果你用R6标签,你可能会吸引合适的专家)
A <- setRefClass("A",
     fields = list(
       m_a = "numeric",
       m_b = "character"
     ),
     methods = list(
      initialize = function(t_a,t_b,...){
        if(missing(t_a) && missing(t_b)){
          stop("a or b must be provided")
        }
        if(!missing(t_a)){
          m_a <<- t_a
        }
        if(!missing(t_b)){
          m_b <<- t_b
        }
      }
      )
)


B <- setRefClass("B",
     fields = list(
       m_c = "A"
     ),
     methods = list(
       initialize = function(t_c,...){
          m_c <<- A(t_a=1)
       }
     )
)

bTest <- B(TRUE)