我有一個類,它基本上是一些數據轉換方法的集合。換句話說,我在我的文件中有一些數據,我使用一些不同的代碼片段將文本數據轉換成我可以輕鬆查詢的內容。緩存所有方法的結果
現在,這些方法經常重複使用其他方法,並且隨着核心數據的變化,我想簡單地緩存每種方法的結果,出於速度的原因。
我不想加入到改變每個方法:
^ methodsCache ifNil: [ methodsCache := "compute" ]
我想用菲羅反射的力量來完成我的任務,而不觸及太多的代碼。我有
一個想法是,如果我可以運行每種方法之前的一些代碼,我既可以件事返回緩存值或繼續該方法的執行,並緩存它的結果
謝謝最大,這是一個非常好的例子。你有什麼想法我也可以重定向方法的參數? – Uko
另一個問題是我如何執行'cachedExecute:'?我可以調用我的方法的「乾淨」版本嗎?我可以返回一些值而不是運行該方法的其餘部分嗎? – Uko
您可以安裝一個'#after'鏈接,在方法執行被緩存後,在同一個方法*上安裝'#instead'鏈接。然後'#instead'鏈接將返回緩存的值(它將替換整個方法的AST)。 –