【发布时间】:2010-10-28 00:22:33
【问题描述】:
以下显然可行,但我不喜欢将项目包装在元组中,
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)));
我想写这样的东西:
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));
帮助将是最有用的,ty。
编辑:问题解决,开始使用:
public interface T2Function<T> {
T apply(T Val_1, T Val_2);
}
【问题讨论】:
-
您可以通过从您的
Function.apply返回另一个Function来做到这一点,然后将其应用于第二个参数。Function.apply(a).apply(b)。 “内部”函数将直接使用a,并接收b作为参数。这可以针对n参数进行扩展。这将模仿 Haskell 对函数的处理,但我不确定你会在 Javaland 中从中获得什么。