我有一个类,它基本上是一些数据转换方法的集合。换句话说,我在我的文件中有一些数据,我使用一些不同的代码片段将文本数据转换成我可以轻松查询的内容。缓存所有方法的结果
现在,这些方法经常重复使用其他方法,并且随着核心数据的变化,我想简单地缓存每种方法的结果,出于速度的原因。
我不想加入到改变每个方法:
^ methodsCache ifNil: [ methodsCache := "compute" ]
我想用菲罗反射的力量来完成我的任务,而不触及太多的代码。我有
一个想法是,如果我可以运行每种方法之前的一些代码,我既可以件事返回缓存值或继续该方法的执行,并缓存它的结果
谢谢最大,这是一个非常好的例子。你有什么想法我也可以重定向方法的参数? – Uko
另一个问题是我如何执行'cachedExecute:'?我可以调用我的方法的“干净”版本吗?我可以返回一些值而不是运行该方法的其余部分吗? – Uko
您可以安装一个'#after'链接,在方法执行被缓存后,在同一个方法*上安装'#instead'链接。然后'#instead'链接将返回缓存的值(它将替换整个方法的AST)。 –