首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用回忆录加载当前缓存

使用回忆录加载当前缓存
EN

Stack Overflow用户
提问于 2018-11-18 17:34:02
回答 1查看 42关注 0票数 1

假设我运行了一个回传函数,返回一个整数输出。现在,我不知道用来存储当前缓存的输入是什么。如果使用回忆录包,是否可以获得缓存的当前整数输出?

下面是一些极简的代码:

代码语言:javascript
复制
library(memoise)
fn <- function(x) x+5
fn_mem <- memoise(fn)
a <- fn_mem(5)

现在假设由于某种原因,我丢失了变量a,并且不记得fn_mem是使用输入参数5运行的,但仍然需要知道运行fn_mem时输出是什么。

在这种情况下,有可能得到当前缓存的结果吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-18 22:40:54

可以定义以下函数,该函数接受回忆录函数并返回其上一次评估的结果:

代码语言:javascript
复制
getLast <- function(fn){
    stopifnot(class(fn) == c("memoised", "function"))
    keys <- get("_cache", envir=environment(fn))$keys()
    n <- length(keys)
    get("_cache", envir=environment(fn))$get(keys[n])[[1]]
}

示例:

代码语言:javascript
复制
library(memoise)
fn <- function(x) x*10
fn_mem <- memoise(fn)
fn_mem(1)
[1] 10
getLast(fn_mem)
[1] 10

fn_mem(7)
[1] 70
getLast(fn_mem)
[1] 70
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53363682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档