我正在尝试在 R 中实现特定于对象的方法缓存。我有许多不同类型的对象,其中许多实现的函数经常被调用,需要很长时间才能运行,并且其输入/输出之间不会发生变化处决。所以为了节省时间,我想将这些方法的输出缓存到哈希映射中,它将参数输入的哈希映射到输出。问题是这些长时间运行的方法引用了对象字段,这意味着我需要缓存是特定于对象的。我无法实现全局缓存过程,因为在同一对象的两个不同实例上执行相同的函数通常会产生不同的输出。
为此,我已经实现了一个父类 Cache,它有一个哈希映射,并实现了“缓存”功能。然后这个对象可以被其他对象继承,以轻松实现对象特定的方法缓存。
为了简化这个过程,我还实现了一个装饰器,这样子对象的方法就可以很容易地包装在缓存函数中。
这是我的代码:
我已经验证缓存逻辑在引用类。这里的问题是“缓存”函数是Cache对象的一个方法,并没有在全局环境中定义。这意味着该方法在定义子对象CachingObject时是不可见的,我得到以下错误:
有没有办法在子对象的定义中引用父对象的方法?如果没有,是否有办法完成我在这里尝试做的事情?