我试图在运行实例化对象的整个过程中更改属性的值。这是下载机制的一部分,其中将值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.