我有一个函数NodeTransitionFunction(Integer exp,Integer KVal),需要计算f(x)=(x ^ exp)%KVal。
然后有一个函数Integer apply(Integer val)需要计算f(val)。
现在要设置NodeTransitionFunction的构造函数,如何从apply函数中获取参数val?
还是我完全试图以错误的方式解决这个问题?
public class NodeTransitionFunction {
public NodeTransitionFunction(Integer exp, Integer KVal) {
// CONSTUCTOR: Sets the class to calculate f(x) = (x ^ exp) mod KVal
// TODO
}
public Integer apply(Integer val) {
// PRE: -
// POST: Implements f(val)
// TODO
return null;
}
public static void main(String[] args) {
NodeTransitionFunction f = new NodeTransitionFunction(3, 33);
System.out.println(f.apply(5));
}
}
答案 0 :(得分:0)
我认为您要问的是如何将函数传递给构造函数,以便以后可以应用。如果是这种情况,您实际上根本不需要一个类:您定义的是IntUnaryOperator
-即一个接受一个int并返回一个int的函数。
所以:
IntUnaryOperator makeNodeTransitionFunction(double exp, double mod) {
return x -> Math.round(Math.mod(Math.power(x, exp), mod));
}
然后将其应用为:
makeNodeTransitionFunction(7, 11).apply(5)
如果需要将其放在类中,则可以将IntUnaryOperator
设为在构造函数中分配的私有字段。然后,apply
方法将只委托给该字段。