Alb*_*ert 15 python java annotations decorator memoization
我的代码中有一些函数,它们使用memoization很有意义(似乎甚至是强制性的).
我不想单独为每个功能手动实现它.有没有办法(例如在Python中)我可以使用注释或做其他事情,所以我自动在我想要的那些函数上得到它?
oks*_*ayt 13
Spring 3.1现在提供了一个@Cacheable注释,它正是这样做的.
顾名思义,@ Cacheable用于划分可缓存的方法 - 即,将结果存储到缓存中的方法,以便在后续调用(具有相同的参数)时,返回缓存中的值而不必实际执行该方法.
我认为没有语言的本地化记忆实现。
但是,作为方法的装饰器,您可以轻松实现它。您必须维护一个Map:Map的键是参数,值是结果。
这是一个单参数方法的简单实现:
Map<Integer, Integer> memoizator = new HashMap<Integer, Integer>();
public Integer memoizedMethod(Integer param) {
if (!memoizator.containsKey(param)) {
memoizator.put(param, method(param));
}
return memoizator.get(param);
}
Run Code Online (Sandbox Code Playgroud)