如何在R6Class的私有方法中访问公共成员?

时间:2019-01-10 01:53:39

标签: r private-methods r6 public-members

library(R6)

Person<-R6Class("Person",
    public=list(
      name=NULL,
      age=NULL,
      initialize=function(name,age){
        self$name<-name
        self$age<-age
      },
      GrowUP1=function(){
        self$publicGrow()
      },
      publicGrow=function(){
        self$age<-self$age+1
      },
      GrowUP2=function(){
        self$privateGrow()
      }
    ),
    private=list(
      privateGrow=function(){
        self$age<-self$age+1
      }
    )
)

Person<-Person$new('Tom',20)
Person$age
Person$GrowUP1()
Person$age
Person$GrowUP2()    

这是我的示例代码。 我运行上一个代码Person$GrowUP2()。 但是,我遇到了错误Error in Person$GrowUP2() : attempt to apply non-function

我不知道为什么这段代码没有运行。我想使用私有方法来修改公共成员。如何

1 个答案:

答案 0 :(得分:0)

使用private调用私有函数:

GrowUP2=function(){
        private$privateGrow()
        }

Person<-Person$new('Tom',20)
Person$GrowUP1()
Person$GrowUP2() 
Person$age

[1] 22