Можно ли сериализовать активную привязку "как есть", без сериализации среды?
makeActiveBinding(
sym = "foo",
env = .GlobalEnv,
fun = function() cat("Hello\n")
)
foo
#> Hello
saveRDS(foo, "foo-is-not-active-anymore.rds")
#> Hello
rm(foo)
bar <- readRDS("foo-is-not-active-anymore.rds")
bar
#> NULL
Мне бы хотелось, чтобы bar
также напечатал "Hello". Кажется, RDS содержит только последнее значение, взятое foo
, то есть NULL
в примере.
Я могу сделать следующее, но я бы предпочел обойтись без посреднической среды
e <- new.env()
makeActiveBinding(
sym = "foo",
env = e,
fun = function() cat("Hello\n")
)
e$foo
#> Hello
#> NULL
saveRDS(e, "foo-is-active-in-an-environment.rds")
rm(e)
f <- readRDS("foo-is-active-in-an-environment.rds")
f$foo
#> Hello
#> NULL