suivant fonctionne évidemment, mais je n'aime pas emballer des articles dans Tuple,arguments de la fonction Goyave
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)));
Je veux écrire quelque chose comme:
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));
aide serait plus utile, ty.
Edit: Problème résolu, a commencé à utiliser:
public interface T2Function<T> {
T apply(T Val_1, T Val_2);
}
Vous pouvez le faire en retournant un autre 'Function' de votre' Function.apply', puis en appliquant cela au second argument. 'Function.apply (a) .apply (b)'. La fonction "interne" utiliserait directement 'a' et recevrait' b' comme paramètre. Cela pourrait être étendu pour les paramètres 'n'. Cela imiterait le traitement des fonctions de Haskell, mais je ne suis pas sûr de ce que vous en retireriez à Javaland. – jpaugh