以下显然有效,但我不喜欢在Tuple中包装项目,
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)));
Run Code Online (Sandbox Code Playgroud)
我想写一些类似的东西:
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));
Run Code Online (Sandbox Code Playgroud)
ty是最有用的帮助.
编辑:问题解决了,开始使用:
public interface T2Function<T> {
T apply(T Val_1, T Val_2);
}
Run Code Online (Sandbox Code Playgroud)
Col*_*inD 15
我认为你最好使用你自己的界面,如下所示:
public interface Operation {
double apply(double a, double b);
}
Run Code Online (Sandbox Code Playgroud)
Guava Function是一个单一的参数函数,并不适用于任何多参数.
我尝试过的另一件事是ReduceFunction<F, T>碰巧可以用于这样的事情.它用于reduce或fold操作,看起来像:
public interface ReduceFunction<F, T> {
T apply(T a, F b); // I can't decide on good names for the parameters =(
}
Run Code Online (Sandbox Code Playgroud)
这可以让你做的事情
List<Double> doubles = ...
Double sum = reduce(doubles, MathOps.add(), 0.0);
Run Code Online (Sandbox Code Playgroud)
哪个MathOps.add()是ReduceFunction<Double, Double>显而易见的事情.
| 归档时间: |
|
| 查看次数: |
9022 次 |
| 最近记录: |