在实例化对象运行期间更改属性值

时间:2019-07-01 05:58:33

标签: r properties object-initializers r6

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

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

脚本是从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.

0 个答案:

没有答案