【发布时间】:2021-02-16 05:54:57
【问题描述】:
我有一个冗长的问题。假设我有一个进行数学计算的方法,并且该方法需要保持状态(即,每次使用参数调用它时,其结果都会受到其先前结果的影响)。
int sum
def add(int x, int y) {
sum = sum + x + y
return sum
}
最重要的是,它的状态取决于它被调用的位置。 (即,如果我从不同的地方两次调用此方法,则该方法必须仅适用于其自己的状态)。我在考虑 groovy 中的闭包,但闭包不会保持状态,如果您将状态存储在闭包外部的变量中,则对该方法的第二次调用将不会有自己的状态。
我们还假设由于我现在不会讨论的原因,我不能将此方法保留在对象中以保持状态。即
class MyObject {
private int sum
MyObject() {}
public int sum(int x, int y) {
sum = sum + x + y
return sum
}
}
我想避免这样做
MyObject mObj = new MyObject()
.... some code later
def result = mObj.add(1,2)
相反,我只想这样做
for (int i = 0; i<5;i++){
def result1 = add(1,2)
}
some code later
for (int i = 0; i<5;i++){
def result2 = add(1,2)
}
在上述情况下,两个 'add' 方法应该有自己的状态。
在 groovy 或 java 中是否有任何其他技巧可以实现这样的目标?
【问题讨论】:
-
“由于我现在不会进入的原因,我不能将此方法保留在对象中以保持状态”:好吧,出于我现在不会进入的原因,你不会得到一个令人满意的答案。