Как получить доступ к открытым членам в приватном методе в R6Class? - PullRequest
0 голосов
/ 10 января 2019
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 голосов
/ 10 января 2019

Вызовите частные функции, используя private:

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

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

[1] 22
...