offensichtlich Nach funktioniert, aber ich weiß nicht Einzelteile mögen in Tuple wickeln,Guava Funktionsargumente
ImmutableMap<String, Function<Tuple2<Double>, Double>> op = new //
ImmutableMap.Builder<String, Function<Tuple2<Double>, Double>>()
.put("+", new Function<Tuple2<Double>, Double>() {
@Override public Double apply(Tuple2<Double> data) {
return data.Val_1 + data.Val_2;
}
}).build();
System.out.println(op.get("+").apply(new Tuple2<Double>(3d, 4d)));
ich so etwas schreiben wollen:
ImmutableMap<String, Function<Double[], Double>> op = new //
ImmutableMap.Builder<String, Function<Double[], Double>>()
.put("+", new Function<Double[], Double>() {
@Override
public Double apply(Double... data) {
return data[0] + data[1];
}
}).build();
System.out.println(op.get("+").apply(3d, 4d));
Hilfe wäre sehr nützlich, ty.
Edit: Problem gelöst, gestartet mit:
public interface T2Function<T> {
T apply(T Val_1, T Val_2);
}
Sie können dies tun, indem Sie eine andere 'Funktion' aus Ihrer' Funktion.Anwendung' zurückgeben und diese dann auf das zweite Argument anwenden. 'Function.apply (a) .apply (b)'. Die "innere" Funktion würde "a" direkt verwenden und "b" als Parameter erhalten. Dies könnte für "n" -Parameter erweitert werden. Das würde Haskells Behandlung von Funktionen nachahmen, aber ich bin mir nicht sicher, was Sie daraus in Javaland gewinnen würden. – jpaugh