从同一个类中的方法调用方法

时间:2019-06-25 16:57:20

标签: r oop class-method r6 class-properties

我试图在基于类的对象中创建流结构。 我有4种方法(其中应从[run()]方法中调用3种方法。

问题:

假设您位于同一对象/类中,是否应该能够从另一个方法调用一个方法。

有效的方法:

我能够以正确的输出一对一运行以下方法:

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 :(得分:0)

您应该可以只将self添加到方法调用中:

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