R:向量化设置 R6 中的活动字段

R: Vectorise setting active fields in R6

我有一个简单的 R6 对象生成器,带有 get/set 主动绑定:

myClass <- R6Class("myClass",
                   private = list(
                     ..status = TRUE
                   ),
                   active = list(
                     status = function(value) {
                       if (missing(value)) {
                         private$..status
                       } else private$..status <- value
                     }
                   )
)

我可以创建一个对象列表,使用 myClass:

生成
class_list <- map(1:10, ~ myClass$new())

我可以得到列表中每个对象的 status,使用 purrr:: map:

map(class_list, ~ .x$status)

但是如果我想设置class_list中所有对象的status怎么办?我想用 purrr:: walk:

walk(class_list, ~ .x$status <- FALSE)

这会引发 Error: unexpected [symbol]...,使用 =.

也是如此

谁能提供解决方案?最好使用 purrr

谢谢!

我们可以将这些赋值包装在 {} 和 return 原始对象 (.x)

map(class_list, ~ {.x$status <- FALSE; .x})

现在,再次检查 status

map_lgl(class_list, ~ .x$status)
#[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE