我试图在基于类的对象中创建流结构。 我有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()
答案 0 :(得分:0)
您应该可以只将self
添加到方法调用中:
run = function() {
self$part_1()
self$part_2()
self$part_3()
}