gpt4 book ai didi

methods - 记住 Groovy 中的成员方法

转载 作者:行者123 更新时间:2023-12-01 22:25:38 28 4
gpt4 key购买 nike

我有一个方法是 pure function并需要一段时间才能运行。我想记住这个方法,以便后续调用更快。我可以在 Groovy 的文档中看到,您可以通过以下方式内存闭包:

foo = {…}.memoize()

但是,我找不到记住成员方法的方法。有办法做到这一点吗?

最佳答案

编辑:

在 Groovy 2.2.X 中,将有一个名为 @Memoized 的新 AST 转换,它将为您执行此操作。

import groovy.transform.Memoized

class Woo {
@Memoized
def sum( int a, int b ) {
Thread.sleep( 1000 )
a + b
}
}

new Woo().with {
println new Date()
println sum( 1, 2 )
println new Date()
println sum( 1, 2 )
println new Date()
}
<小时/>

原始答案

另一种选择是编写某种 AST 转换,以允许您使用 @Memoize 注释该方法,并为您完成内存。

我可以找到几个例子,一个 here for adding Redis as a Memoization cache to Grails ,还有另一个 here which seems to allow memoization of single argument methods基本上通过操纵 AST 使其看起来像 Epidemian 答案的第二部分。

由于您可能需要多个参数,因此我会选择 Epidemian 的第二种方法。然而,编写 AST 转换可能是一个有趣的实验/副项目?

如果做得好,我也可以回到 Groovy 核心源代码(为了名声和荣耀):-)

关于methods - 记住 Groovy 中的成员方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9980432/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com