Сериализация активного связывания - PullRequest
1 голос
/ 17 февраля 2020

Можно ли сериализовать активную привязку "как есть", без сериализации среды?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...