0

我试图在运行实例化对象的整个过程中更改属性的值。这是下载机制的一部分,其中值 20 设置为执行 20 行数据的第一次下载,其余下载将设置为 1 行。它是用 R 面向对象编程编写的,使用包 R6。

该值被记住是因为它存储在对象中(之前从类中实例化)。

脚本正在从 Rstudio(版本:1.1.456)触发。

观察:

该脚本在第一次运行时将属性值从 切换NULL为。20

问题:

20该值在所有脚本运行期间保持不变。

想要的行为:

第一次运行时,该值应以 开头NULL并交换为20

第二次运行脚本,属性值应该开始20对 if 语句做出反应并将值更改为1.

从第 3 次运行开始,以及所有其余运行,该值应为星号,1并且 if 语句将找不到任何匹配项,将值保持为1.

# ----------------------------------------
# Classes.
# ----------------------------------------
Download <- R6Class("Download",
    public = list(
        # --------------------------------------------
        # Initializer:
        # --------------------------------------------
        initialize = function(value = NULL) {
            self$value <- value
        },

        # --------------------------------------------
        # Properties:
        # --------------------------------------------
        value = NULL,

        # --------------------------------------------
        # Functions:
        # --------------------------------------------
        run = function() {
            self$value_switcher()
        },
        value_switcher = function() {
            if(is.null(self$value)) {
                self$value = 20
            } else if(self$value == 20) {
                self$value = 1
            }
            cat("Your property value is :", self$value)
        }
    ) # Closure of list.
) # Closure of class.

download <- Download$new() # Instantiate the class.
download$run()             # Run object methods.
4

0 回答 0