首页 > 解决方案 > 从同一类中的方法调用方法

问题描述

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

问题:

假设您在同一个对象/类中,您是否可以从另一个方法调用一个方法。

什么有效:

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

游戏$part_1()

游戏$part_2()

游戏$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()

标签: roopclass-methodr6class-properties

解决方案


您应该能够添加self到方法调用:

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

推荐阅读