我创建了一个简单的类:
<Tabs>
<Tab title="1" />
<Tab title="2" />
<Tab title="3" />
<button onClick={addTab}>Test</button>
</Tabs>
因此,我可以像这样的链中调用此方法:class Compute{
public Compute count(Function func){...}
}
,但是我只想记住我已经传递的第一个函数。我通过在类中添加一个全局布尔值来做到这一点:
compute.count(function).count(function).count(...)
但是我也认为这不是一个好的解决方案。有没有更好的解决方法?
答案 0 :(得分:2)
您可以检查func是否为null并仅在为true时分配它,而不是使用布尔值。当然,仅当您不在其他地方初始化它时,它才起作用。
答案 1 :(得分:0)
或者,您可以重载count()
:
class Compute{
private boolean first;
private Function func;
public Compute count(Function func) { ...}
public Compute count() { ... }
}
现在您可以做
compount.count(function).count().count().count();
或者您可以将Function
对象传递给构造函数:
class Compute{
private boolean first;
private Function func;
public Compute(Function func) { this.func = func}
public Compute count() { ... }
}
然后做
Compute comput = new Compute(function)
compute.count().count().count();
最后一个选项清楚地表明,仅在创建Compute
对象时才存储函数。
答案 2 :(得分:0)
建设者的模式可能会有所帮助。如果您定义类似
的类class Compute {
private final Function function;
public Compute(Function function) {
this.function = function;
}
public Compute count(){
// your code
}
}
然后您可以创建一个类似
的构建器public class ComputeBuilder {
private final Computation computation;
public ComputeBuilder addFunction(Function function) {
computations.add(new Computation(function))
}
public ComputeBuilder addComputation(Computation computation) {
computations.add(computation)
}
public Computation build(int iteration) {
Computation result;
for (int index = 0 ; index < iteration; index++ ) {
if (index > 0) {
result = result.count();
}
result = computation.count();
}
return result;
}
}
最后是一个构建器,您可以多次重用而无需重写它。 希望对您有所帮助。