Вызов метода из метода внутри того же класса - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь создать структуру потока в объекте, основанном на классе.У меня есть 4 метода (где 3 метода должны вызываться из метода [run ()]. ​​

Вопрос:

Если вы сможете вызывать метод из другогометод при условии, что вы находитесь в том же объекте / классе.

Что работает:

Я способен запускать следующие методы один за другим с правильным выводом:

game $ part_1 ()

game $ part_2 ()

game $ part_3 ()

Ошибки:

Когда я запускаю [game $ run ()], я получаю следующую ошибку:

Error in part_1() : could not find function "part_1"

Требуемое поведение:

Я хочу объектчтобы иметь возможность запускать методы, запускаемые другими методами (все методы находятся в одном классе).

if (!"package:R6" %in% search()) {
  library(R6)
}


# Class


Game <- R6Class("Game",

    public = list(

        # Properties:

        a     = 0,
        b     = 0,
        sum   = 0,


        # Functions:

        run = function() {
            part_1()
            part_2()
            part_3()
        },

        part_1 = function() {
            self$a = 10
            return(self$a)
        },

        part_2 = function() {
            self$b = 20
            return(self$b)
        },

        part_3 = function() {
          self$sum = self$a + self$b
          return(self$sum)
        }

     )

)
# Instantiate an object base on a class.
game <- Game$new()

# Run function that runs through all other functions.
game$run()

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете просто добавить self к вызовам метода:

run = function() {
                    self$part_1()
                    self$part_2()
                    self$part_3()
                  }
...