【问题标题】:How to access public members in private method in R6Class?如何在 R6Class 中以私有方法访问公共成员?
【发布时间】:2019-01-10 01:53:38
【问题描述】:
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

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

【问题讨论】:

    标签: r private-methods r6 public-members


    【解决方案1】:

    使用private调用私有函数:

    GrowUP2=function(){
            private$privateGrow()
            }
    
    Person<-Person$new('Tom',20)
    Person$GrowUP1()
    Person$GrowUP2() 
    Person$age
    
    [1] 22
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      相关资源
      最近更新 更多